実現したいこと
下のデータベースから同じtitle_id(議題)であるものの中で最もscore(投票数)が大きいものだけを取り出して表示させたい。
model.py
from accounts.models import CustomUser from django.db import models class home(models.Model): """議題投稿者モデル""" user = models.ForeignKey(CustomUser, verbose_name='ユーザー', on_delete=models.PROTECT) title = models.CharField(verbose_name='お題', max_length=50) created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True) finished_at = models.DateTimeField(verbose_name='終了日時', auto_now=True) def __str__(self): return self.title class Answer_user(models.Model): """回答者モデル""" user = models.ForeignKey(CustomUser, verbose_name='ユーザー', on_delete=models.PROTECT) name = models.CharField(verbose_name='名前', blank=False, max_length=15) title = models.ForeignKey(Oogiri_home, verbose_name='お題', on_delete=models.PROTECT) answer = models.CharField(verbose_name='回答', blank=True, null=True, max_length=36) score = models.IntegerField(default=0, verbose_name='票数') created_at = models.DateTimeField(verbose_name='作成日時', auto_now_add=True) def __str__(self): return self.answer
views.py
def gallery_view(request): context = { 'titles': home.objects.order_by('-created_at'), 'answers': Answer_user.objects.all(), } return render(request, 'gallery.html', context,)
試したこと
'answers': Oogiri_user.objects.filter(title_id=home.id).order_by('-score')[0:1],
こうすることで各議題に対するベストアンサーがとれると思ったのですがこれにした場合title_id=home.idでエラーが起きる上に、[0:1]では一番最初の1つしか取り出せないということが分かった。
補足情報(FW/ツールのバージョンなど)
python初心者であるためわからないことも多いですが回答よろしくお願いします。
もしモデルの組み方を変えたほうが良いなどの意見がありましたらアドバイスもよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/30 11:38
2020/09/30 13:50 編集
2020/09/30 22:11
2020/09/30 22:12
2020/10/01 03:52