teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

コードの追記、文章の追記

2020/09/30 08:43

投稿

nagimasa
nagimasa

スコア13

title CHANGED
@@ -1,1 +1,1 @@
1
- 【python:Django】モデルに紐づいた複数枚のギャラリーページ作り方がわからな
1
+ 【python:Django】モデルに紐づいた複数枚のギャラリーページ作り
body CHANGED
@@ -3,25 +3,75 @@
3
3
  django 3.0.7
4
4
 
5
5
  実現したいこと
6
- djangoのモデに登録したもに紐づいたギャラリーページの作りかた
6
+ 店舗紹介ポータサイト(食べログ風)個別のページで店舗の外観、内観写真や提供されるサービスの写真をまとめたギャラリーページ
7
- 可能ならadminから管理したい
8
7
 
8
+ 例えば
9
+ 焼き鳥Aという紹介ページに、店舗の見出し写真と営業情報を掲載し、ギャラリーページでは提供される料理や店内写真などが見れるようにしたい
10
+ 食べログのような、店舗紹介サイトです。
11
+ 理想はギャラリーに掲載する写真にタイトルも付けたいと考えています。
12
+
13
+
14
+
15
+ Djangoのadminの管理サイトが便利だと思ったので、できればデータの追加や削除などの操作、画像のアップロードも管理サイトで行いたいと思っています。
16
+ ですが、Djangoの管理サイトでは個別に対する複数の画像のアップは対応していないという記事を見かけたことがあります。
17
+ その場合、実現させるにはforms.pyを用意し操作する必要があるのでしょうか?
18
+
9
19
  ```python
20
+ settings.py
21
+
22
+ import os
23
+
24
+ MEDIA_URL = '/media/'
25
+ MEDIA_ROOT = os.path.join(BASE_DIR, 'static')
26
+ ```
27
+ ```python
28
+ urls.py
29
+
30
+ from django.urls import path
31
+ from .import views
32
+
33
+ urlpatterns = [
34
+ path('', views.shops_index, name='index'),
35
+ path('shops/detail/<int:pk>', views.ShopDetail.as_view(), name='shop_detail'),
36
+ ]
37
+ ```
38
+
39
+ ```python
10
40
  Model.py
11
41
  class Category(models.Model):
12
42
  name = models.CharField("カテゴリー", max_length=255)
13
43
 
14
44
 
15
- class shops(models.Model):
45
+ class Shops(models.Model):
16
46
  shop_name = models.CharField(max_length=255, verbose_name="お店")
17
47
  category = models.ForeignKey(Category, on_delete=models,PROTECT)
48
+ created_date = models.DateField(default=timezone.now, verbose_name="作成日")
18
49
  main_image = models.ImageField(upload_to="media/", blank=True)
50
+ #ここにgallery_image = models...という風に書いて複数の写真を紐づけることはできないのでしょうか?
19
51
  ```
20
52
 
21
- このようなものがあったとします。
53
+ ```python
22
- このshopsで近隣のお店を紹介するサイトを作ろうと思っています。
54
+ views.py
23
- ですので、飲食店や小売店などさまざまなお店を登録していく予定です。
24
- そこで各shopに対してメイン画像と、ギャラリーページを用意したいと考えています。
25
- メイン画像についてはImageFieldで解決できると思っているのですが、ギャラリーページを用意するにあたって、どのようなフィールドを用いたらいいのかわかりません。
26
55
 
56
+ from .models import Shops, Category
57
+
58
+ class ShopDetail(generic.DetailView):
59
+ model = Shops
60
+ ```
61
+
62
+ ```html
63
+ shops/detail/1/.html
64
+
65
+ {% if shops.created_date %}
66
+
67
+ <div>
68
+ <p>{{ shops.shop_name }}</p>
69
+ </div>
70
+ <div>
27
- adminを使った管理サイトで各ショップメイン・ギャラリー画像をアップロードなどを行いたいのですが可能でしょうか?
71
+ <!-- 以下に焼き鳥A料理写真や店内写真などをあるだけ表示させたい -->
72
+ <img src="1">
73
+ <img src="2">
74
+ <img src="3">
75
+ </div>
76
+ {% endif %}
77
+ ```