Django クエリセットのカウント表示方法を教えていただきたいです。
現在、二つのモデルの中のカテゴリを一覧で表示させており、その横にカウントを表示させたのですが、同じカテゴリが何度も表示されてしまいます。(なので横のカウントは全部1の表示です。)
↓こんな感じで表示されます。
sample
1男性 (1) 男性 (1) その他(1) 女性 (1) 2誕生日 (1) 女性 (1) その他 (1) 女性 (1) 3女性 (1) 男性 (1) 男性 (1) 女性 (1) 4その他 (1) 女性 (1) その他 (1) 女性 (1)
本来ならカテゴリ枠分の3つしか表示されず横のカウントが増えていって欲しいのですが、
どうすれば一括?で表示させることができるのでしょうか?
何かアドバイスをいただきたいです。
よろしくお願いいたします。
python
1 2#models.py 3class Post(models.Model): 4 CATEGORY = [ 5 (1, '男性'), 6 (2, '女性'), 7 (3, 'その他'), 8 ] 9 title = models.CharField('タイトル', max_length=70, null=True) 10 category = models.IntegerField(verbose_name='性別 ',choices=CATEGORY, default=1, null=True, blank=True,) 11 12class SubPost(models.Model): 13 Sub_CATEGORY = [ 14 (1, '北海道'), 15 (2, '東北'), 16 (3, '関東'), 17 (4, '中部'), 18 (5, '近畿'), 19 (6, '中国'), 20 (7, '四国'), 21 (8, '九州・沖縄'), 22 ] 23 name = models.CharField('名前', help_text='20文字以内', max_length=20, blank=True, null=True ) 24 category = models.IntegerField(verbose_name='カテゴリー ', blank=True, null=True, choices=Sub_CATEGORY,default=1) 25
python
1#views.py 2class CategoryView(View): 3 paginate_by = 10 4 """リスト一覧""" 5 def get(self, request, *args, **kwargs): 6 context = {} 7 lst = [p.get_category_display for p in Post.objects.order_by('-category')] 8 context['all_post_category_list'] = Counter(lst) 9 print(Counter(lst))#追加 10 11 12 context['all_subpost_category_list'] = SubPost.objects.annotate(category_count=Count('category')).order_by('-category') 13 14 return render(request, 'app/category_list.html', context) 15
html
1<p><h2>カテゴリ一覧</h2></p> 2<hr> 3<div class="lisits"> 4 <div class="card-columns"> 5 <ul> 6 {% for categorys in all_post_category_list %} 7 <div class="card"> 8 <li> 9 {{ categorys.get_category_display }} 10 ({{ categorys.categorys.category_count }}) 11 </a> 12 </li> 13 </div> 14 {% endfor %} 15 </ul> 16 </div> 17</div> 18
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/09 02:14
2020/08/09 05:27
2020/08/09 05:30
2020/08/09 06:19
2020/08/09 07:31
2020/08/09 07:57
2020/08/09 08:04 編集
2020/08/09 08:08
2020/08/09 09:17
2020/08/09 09:28
2020/08/09 10:45