为了账号安全,请及时绑定邮箱和手机立即绑定

Django查询:按会话分组的最后收到的邮件

Django查询:按会话分组的最后收到的邮件

白板的微信 2021-03-28 17:15:34
我的模特: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')它返回所有对话,其中包含登录用户(request.user)收到的任何邮件。为什么?我想要按会话分组的最新收到的邮件,例如Gmail。
查看完整描述

1 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

我知道了。这是查询:


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')



查看完整回答
反对 回复 2021-04-09
  • 1 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号