質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2370閲覧

【python:Django】モデルに紐づいた複数枚のギャラリーページを作りたい

nagimasa

総合スコア13

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/09/30 05:08

編集2020/09/30 08:43

環境
python3.7.6
django 3.0.7

実現したいこと
店舗紹介ポータルサイト(食べログ風)の個別のページで店舗の外観、内観写真や提供されるサービスの写真をまとめたギャラリーページ

例えば
焼き鳥Aという紹介ページに、店舗の見出し写真と営業情報を掲載し、ギャラリーページでは提供される料理や店内写真などが見れるようにしたい
食べログのような、店舗紹介サイトです。
理想はギャラリーに掲載する写真にタイトルも付けたいと考えています。

Djangoのadminの管理サイトが便利だと思ったので、できればデータの追加や削除などの操作、画像のアップロードも管理サイトで行いたいと思っています。
ですが、Djangoの管理サイトでは個別に対する複数の画像のアップは対応していないという記事を見かけたことがあります。
その場合、実現させるにはforms.pyを用意し操作する必要があるのでしょうか?

python

1settings.py 2 3import os 4 5MEDIA_URL = '/media/' 6MEDIA_ROOT = os.path.join(BASE_DIR, 'static')

python

1urls.py 2 3from django.urls import path 4from .import views 5 6urlpatterns = [ 7 path('', views.shops_index, name='index'), 8 path('shops/detail/<int:pk>', views.ShopDetail.as_view(), name='shop_detail'), 9]

python

1Model.py 2class Category(models.Model): 3 name = models.CharField("カテゴリー", max_length=255) 4 5 6class Shops(models.Model): 7 shop_name = models.CharField(max_length=255, verbose_name="お店") 8 category = models.ForeignKey(Category, on_delete=models,PROTECT) 9 created_date = models.DateField(default=timezone.now, verbose_name="作成日") 10 main_image = models.ImageField(upload_to="media/", blank=True) 11#ここにgallery_image = models...という風に書いて複数の写真を紐づけることはできないのでしょうか?

python

1views.py 2 3from .models import Shops, Category 4 5class ShopDetail(generic.DetailView): 6 model = Shops

html

1shops/detail/1/.html 2 3{% if shops.created_date %} 4 5<div> 6 <p>{{ shops.shop_name }}</p> 7</div> 8<div> 9 <!-- 以下に焼き鳥Aの料理写真や店内写真などをあるだけ表示させたい --> 10 <img src="1"> 11 <img src="2"> 12 <img src="3"> 13</div> 14{% endif %}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sfdust

2020/09/30 06:56

ギャラリーページとはそもそもなんでしょうか? 1つのshop(店舗)に紐付く、内観写真や外観写真、レストランであれば料理写真といった「複数の画像の集合」でしょうか? shop(店舗)ページ内にそれら画像を表示すればよいだけでしょうか? それともそれら画像とともに説明の文章を登録し、別ページとして表示できるようにしたものが「ギャラリーページ」なのでしょうか。 また、あなたが途中まで作成しているものがすでに存在しているのであれば、そのソースコードを全て質問文に追加し、「ここにこういう機能をつけたい」、と具体的に質問してください。 でなければ、丸投げに近く、回答は難しいとおもいます。
guest

回答1

0

ベストアンサー

Python

1class Shops(models.Model): 2 shop_name = models.CharField(max_length=255, verbose_name="お店") 3 category = models.ForeignKey(Category, on_delete=models,PROTECT) 4 created_date = models.DateField(default=timezone.now, verbose_name="作成日") 5 main_image = models.ImageField(upload_to="media/", blank=True) 6 7class GalleryImages(models.Model): 8 shop = models.ForeignKey(Shops, on_delete=models.CASCADE, related_name="g_i_shop") 9 image = models.ImageField(upload_to=<アップロード先>) 10```こんな感じで`GalleryImages`という外部テーブルを作って紐づければいいと思います。 11`forms.py`でそれぞれの`ModelForm`を作って、`formset`でくっつければいいかと.. 12[参考](http://www.366service.com/jp/qa/5c8cdc1a7ece13673767ca8129d7a2b7)

投稿2020/09/30 10:25

編集2020/09/30 10:27
ForestSeo

総合スコア2722

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nagimasa

2020/10/02 15:51

ありがとうございます! 試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問