質問編集履歴
1
コードの追記、文章の追記
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
【python:Django】モデルに紐づいた複数枚のギャラリーページ
|
1
|
+
【python:Django】モデルに紐づいた複数枚のギャラリーページを作りたい
|
test
CHANGED
@@ -8,9 +8,69 @@
|
|
8
8
|
|
9
9
|
実現したいこと
|
10
10
|
|
11
|
-
|
11
|
+
店舗紹介ポータルサイト(食べログ風)の個別のページで店舗の外観、内観写真や提供されるサービスの写真をまとめたギャラリーページ
|
12
12
|
|
13
|
+
|
14
|
+
|
15
|
+
例えば
|
16
|
+
|
17
|
+
焼き鳥Aという紹介ページに、店舗の見出し写真と営業情報を掲載し、ギャラリーページでは提供される料理や店内写真などが見れるようにしたい
|
18
|
+
|
19
|
+
食べログのような、店舗紹介サイトです。
|
20
|
+
|
21
|
+
理想はギャラリーに掲載する写真にタイトルも付けたいと考えています。
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
Djangoのadminの管理サイトが便利だと思ったので、できればデータの追加や削除などの操作、画像のアップロードも管理サイトで行いたいと思っています。
|
30
|
+
|
31
|
+
ですが、Djangoの管理サイトでは個別に対する複数の画像のアップは対応していないという記事を見かけたことがあります。
|
32
|
+
|
33
|
+
その場合、実現させるにはforms.pyを用意し操作する必要があるのでしょうか?
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
```python
|
38
|
+
|
39
|
+
settings.py
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
import os
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
MEDIA_URL = '/media/'
|
48
|
+
|
49
|
+
MEDIA_ROOT = os.path.join(BASE_DIR, 'static')
|
50
|
+
|
51
|
+
```
|
52
|
+
|
53
|
+
```python
|
54
|
+
|
55
|
+
urls.py
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
from django.urls import path
|
60
|
+
|
61
|
+
from .import views
|
62
|
+
|
63
|
+
|
64
|
+
|
13
|
-
|
65
|
+
urlpatterns = [
|
66
|
+
|
67
|
+
path('', views.shops_index, name='index'),
|
68
|
+
|
69
|
+
path('shops/detail/<int:pk>', views.ShopDetail.as_view(), name='shop_detail'),
|
70
|
+
|
71
|
+
]
|
72
|
+
|
73
|
+
```
|
14
74
|
|
15
75
|
|
16
76
|
|
@@ -26,28 +86,68 @@
|
|
26
86
|
|
27
87
|
|
28
88
|
|
29
|
-
class
|
89
|
+
class Shops(models.Model):
|
30
90
|
|
31
91
|
shop_name = models.CharField(max_length=255, verbose_name="お店")
|
32
92
|
|
33
93
|
category = models.ForeignKey(Category, on_delete=models,PROTECT)
|
34
94
|
|
95
|
+
created_date = models.DateField(default=timezone.now, verbose_name="作成日")
|
96
|
+
|
35
97
|
main_image = models.ImageField(upload_to="media/", blank=True)
|
98
|
+
|
99
|
+
#ここにgallery_image = models...という風に書いて複数の写真を紐づけることはできないのでしょうか?
|
36
100
|
|
37
101
|
```
|
38
102
|
|
39
103
|
|
40
104
|
|
41
|
-
|
105
|
+
```python
|
42
106
|
|
43
|
-
|
107
|
+
views.py
|
44
|
-
|
45
|
-
ですので、飲食店や小売店などさまざまなお店を登録していく予定です。
|
46
|
-
|
47
|
-
そこで各shopに対してメイン画像と、ギャラリーページを用意したいと考えています。
|
48
|
-
|
49
|
-
メイン画像についてはImageFieldで解決できると思っているのですが、ギャラリーページを用意するにあたって、どのようなフィールドを用いたらいいのかわかりません。
|
50
108
|
|
51
109
|
|
52
110
|
|
111
|
+
from .models import Shops, Category
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
class ShopDetail(generic.DetailView):
|
116
|
+
|
117
|
+
model = Shops
|
118
|
+
|
119
|
+
```
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
```html
|
124
|
+
|
125
|
+
shops/detail/1/.html
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
{% if shops.created_date %}
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
<div>
|
134
|
+
|
135
|
+
<p>{{ shops.shop_name }}</p>
|
136
|
+
|
137
|
+
</div>
|
138
|
+
|
139
|
+
<div>
|
140
|
+
|
53
|
-
|
141
|
+
<!-- 以下に焼き鳥Aの料理写真や店内写真などをあるだけ表示させたい -->
|
142
|
+
|
143
|
+
<img src="1">
|
144
|
+
|
145
|
+
<img src="2">
|
146
|
+
|
147
|
+
<img src="3">
|
148
|
+
|
149
|
+
</div>
|
150
|
+
|
151
|
+
{% endif %}
|
152
|
+
|
153
|
+
```
|