【发布时间】:2017-04-29 13:08:39
【问题描述】:
我为我的 Django 项目构建了一个非常基本的私人消息传递模块。
我有一个消息模型,它包括:
sender (Foreign key to the member model)
recipient (Foreign key to the member model)
message
date (Datetime of which the message was created)
现在我的问题是我想创建一个新视图,它根据这些消息返回对话列表。
我正在尝试编写一个返回最新消息但唯一的查询,其中发件人 = 当前用户或收件人 = 当前用户。这样我就有了一个最新消息列表,它应该相当于一个对话列表。我是不是说对了,还是我完全想多了?
conversations = Message.objects.filter(Q(recipient=request.user) |
Q(sender=request.user)).annotate(max=Max('date'))
但这会返回重复的对话我从另一个堆栈溢出帖子中尝试过:
conversations = Message.objects.order_by('recipient', 'sender',
'date').distinct('recipient', 'sender')
但我收到此错误“此数据库后端不支持 DISTINCT ON 字段”
任何帮助将不胜感激。
【问题讨论】:
-
不清楚您在这里需要什么帮助。您在编写查询时遇到问题吗?你知道如何制作视图吗?到目前为止你有什么?
-
嗨,葛莱米。抱歉解释不好。我在查询时遇到问题。我使用 MySQL 作为数据库平台。
-
显示你目前拥有的东西。粘贴模型和查询,以便我们了解详细信息。
-
老实说,我没有太多话要说。我正在努力让逻辑与 Django 一起正常运行。我试过这个: conversations = Message.objects.filter(Q(recipient=request.user) | Q(sender=request.user)).annotate(max=Max('date')) 但这会返回我试过的重复对话这来自另一个堆栈溢出帖子:conversations = Message.objects.order_by('recipient', 'sender', 'date').distinct('recipient', 'sender') 但我收到此错误“不支持 DISTINCT ON 字段通过这个数据库后端”