我有一个消息数据库,它具有senderid,receiverid,消息和日期。现在,我想获取我最近发过消息的用户列表,其中每人有一封最新消息(发送或接收)。我如何才能每人只收到一行消息。
我尝试过,但是这个游戏我两个用户之间的所有消息,我只想要最新消息。
querySet=MessageModel.objects.filter(
Q(sUser=self.request.user) |
Q(rUser=self.request.user)
)
return querySet
但是这个游戏我两个用户之间的所有消息,我只想要最新消息。
答案 0 :(得分:0)
您可以对QuerySet进行排序,然后仅获取列表中的第一项。
querySet = MessageModel.objects.filter(
Q(sUser=self.request.user) |
Q(rUser=self.request.user)
).order_by('-date')[0]
.order_by(...)
根据特定字段对QuerySet进行排序(隐含升序)。通过使用.order_by('-date')
,-date
表示我们想要一个降序,而不是默认的升序。然后,我们可以使用[0]
来获取QuerySet中的第一项。