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

質問編集履歴

1

codeの追加(models.py)

2019/04/30 03:58

投稿

Sano
Sano

スコア19

title CHANGED
File without changes
body CHANGED
@@ -1,11 +1,41 @@
1
1
  ListViewを継承したClassViewのメソッドで受け取れる,kwargsの正体がはっきりわかりません。
2
+ ```python
3
+ # models.py
4
+ class Category(models.Model):
5
+ 10
6
+ 11 name=models.CharField(max_length=255)
7
+ 12
8
+ 13 def __str__(self):
9
+ 14 return self.name
10
+ 15
11
+ 16 def get_latest_post(self):
12
+ 17 queryset = Post.objects.filter(
13
+ 18 category=self)
14
+ 19 return _get_latest_post(queryset)
15
+ 20
16
+ 21 def get_or_create_curry_category():
17
+ 22 category_list=["プログラミング", "料理", "映画"]
18
+ 23 for i in category_list :
19
+ 24 category, _ = Category.objects.get_or_create(name=i )
20
+ 25 return category
21
+ 26
22
+ 27
23
+ 28 class Post(models.Model):
24
+ 29 author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
25
+ 44 category = models.CharField(choices=CATEGORY_CHOICES, max_length=10, default="プログラミング")
26
+ 47 category=models.ForeignKey(
27
+ 48 Category, verbose_name="カテゴリ", on_delete=models.CASCADE,
28
+ 49 default=get_or_create_curry_category,
29
+ 50 )
30
+ ```
2
31
 
3
32
  ```python
33
+ views.py
4
34
  class CategoryListView(ListView):
5
35
  50
6
36
  51 model=Post
7
37
  52 template_name="blog/post_list.html"
8
- 53
38
+ 53
9
39
  54 def get_queryset(self):
10
40
  55 category=get_object_or_404(Category, pk=self.kwargs['pk'])#<--ここ
11
41
  56 return Post.objects.filter(category_id=category).order_by('-published_date')
@@ -18,6 +48,7 @@
18
48
  ```
19
49
 
20
50
 
51
+
21
52
  category=get_object_or_404(Category, pk=self.kwargs['pk'])ではそのCategoryのpkを取得していることはなんとなくわかるのですが、pkを含むkwargsの中身がわからずに困っています。
22
53
  Categoryの初期化メソッドを rerutn self.categorynameとし、
23
54
  Category.objects.filter(**kwargs)としhtmlに表示させたところ