Django クエリセット でカテゴリの重複なしの名前と番号
の取得方法を教えていただきたいです。
python
1class Item(models.Model): 2 3 CATEGORY = [ 4 (1, '和食・日本料理'), 5 (2, 'アジアン'), 6 (3, '中華'), 7 (4, 'イタリアン'), 8 (5, 'フレンチ'), 9 (6, '洋食・西洋料理'), 10 (7, 'その他'), 11 ] 12 category = models.IntegerField(verbose_name='カテゴリ',choices=CATEGORY, null=True, blank=True,) 13 title = models.CharField('タイトル', max_length=70, null=True)
上記のようなカテゴリ一覧をviewで重複なしの名前と番号
を取得したいのですが、うまくいかず質問させていただきました。
番号が欲しい理由はカテゴリをクリックしたときに、TagsPostListView
でそのカテゴリの投稿一覧を表示させたいからです。
python
1#views.py 2class TagsView(View): 3 """リスト一覧""" 4 def get(self, request, *args, **kwargs): 5 context = {} 6#① 7 context['item_all'] = Item.objects.distinct() 8#② 9 context['item'] = Item.objects.values_list('category', flat=True).distinct() 10#③ 11 lst = [p.get_category_display() for p in Item.objects.order_by('-category').distinct()] 12 13 14class TagsPostListView(View): 15 """関連リスト""" 16 def get(self, request,*args, **kwargs): 17 # getパラメーターのtag=, category=の部分を取得 18 tag = request.GET.get('tag') 19 category = request.GET.get('category') 20 21 context = {} 22 context['tag'] = tag 23 context['category'] = category 24 25 context['all_tag_post_list'] = Item.objects.filter(tags__name__in=[tag]).distinct() 26 context['all_item_category_post_list'] = Item.objects.filter(category=category).distinct() 27 return render(request, 'app/tag_post_list.html', context) 28 29
①を実行すると、番号と名前を取得できますがカテゴリが重複してしまいます。
②を実行すると、番号を取得でき、カテゴリの重複もないですが、カテゴリ名が取得できません。
③を実行すると、名前は取得できるのですが、カテゴリが重複してしまい、番号が取得できません。
どうしたら、重複なしでカテゴリ名前とカテゴリ番号
を取得できるのでしょうか。
アドバイスいただきたいです。
よろしくお願いいたします。
Django Version: 2.2
Python Version: 3.8.2
回答1件
あなたの回答
tips
プレビュー