我的模特:class Mail(models.Model): subject = models.CharField(max_length=300) message = models.TextField() receiver = models.ForeignKey(User, related_name='receiver', on_delete=models.CASCADE) sender = models.ForeignKey(User, related_name='sender', on_delete=models.CASCADE) sent_date = models.DateTimeField(auto_now_add=True) conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE) read = models.BooleanField(default=False)我的查詢:Conversation.objects.filter(mail__receiver=request.user).annotate(latest_msg=Max('mail__id')).values('id','mail__id','mail__subject','mail__message','mail__sender__username','mail__sent_date','mail__read').order_by('-latest_msg')它返回所有對(duì)話,其中包含登錄用戶(request.user)收到的任何郵件。為什么?我想要按會(huì)話分組的最新收到的郵件,例如Gmail。
1 回答

精慕HU
TA貢獻(xiàn)1845條經(jīng)驗(yàn) 獲得超8個(gè)贊
我知道了。這是查詢:
maxMailsIds = Conversation.objects.filter(mail__receiver=user).annotate(maxId=Max('mail__id')).values_list('maxId', flat=True)
items = Mail.objects.filter(id__in=maxMailsIds).order_by('-id').values('subject','message')
添加回答
舉報(bào)
0/150
提交
取消