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

質問編集履歴

1

質問の仕方を変えました。

2019/01/24 08:32

投稿

hiranohirano
hiranohirano

スコア33

title CHANGED
@@ -1,1 +1,1 @@
1
- django、テンプレート内のurlのオプションの引数ついて
1
+ django、CreateView内のmodelをテンプレートに引き渡す方法はありますか?
body CHANGED
@@ -1,22 +1,40 @@
1
+ ListViewやUpdateViewにmodelを指定すると、
1
- Djangoドキュメントの以下の箇所分からないことあります。
2
+ プレーそのmodel呼び出せると思います。
2
3
 
4
+ 例えば、下記のようなモデル、下記のようなListViewの場合、
3
- [組み込みタグとフィルタのurl](https://docs.djangoproject.com/ja/1.11/ref/templates/builtins/#url)
5
+ テンプレートで{{ publisher_list }}を呼び出せます。
4
6
 
7
+ models.py
8
+ ```python
9
+ class Publisher(models.Model):
5
- djangoのテンプレート内のurlでは、第一引数の'name'の他に、オプションの引数を取ることができると思います(この場合、client.id)。
10
+ name = models.CharField(max_length=30)
6
11
 
12
+ def __str__(self):
7
- urls.py
13
+ return self.name
8
- ```python
9
- ('^client/([0-9]+)/$', app_views.client, name='app-views-client')
10
14
  ```
11
- テンプレート内
15
+ view.py
12
16
  ```python
13
- {% url 'app-views-client' client.id %}
17
+ from django.views.generic import ListView
18
+ from books.models import Publisher
19
+
20
+ class PublisherList(ListView):
21
+ model = Publisher
14
22
  ```
15
- この、"client.id"の部分は、URL の引数として指定されているのかと思いますが、
23
+ publisher_list.html
24
+ ```html
16
- "client"の部分は何を参照しているのでしょうか?
25
+ {% extends "base.html" %}
17
26
 
18
- view内で指定したmodelでしょうか?
27
+ {% block content %}
28
+ <h2>Publishers</h2>
29
+ <ul>
30
+ {% for publisher in publisher_list %}
19
- 上記の場合、models.pyにclientというクラスがあって、そのIDを指しているのでしょうか?
31
+ <li>{{ publisher.name }}</li>
32
+ {% endfor %}
33
+ </ul>
34
+ {% endblock %}
35
+ ```
20
36
 
37
+ CreateViewの場合、ListViewやUpdateViewと違って、このような呼び出しができないと思うのですが、
38
+ どのようにすればテンプレートに引き渡せるようになるか知りたいです。
21
39
 
22
40
  お分かりになる方、何卒宜しくお願い致します。