通过Django私人聊天中发送的最后一条消息查询用户排序的顺序

时间:2019-01-06 20:34:05

标签: django django-queryset

我想创建一个查询集,该查询集可以按用户发送或接收的最后一条消息的创建日期有效地对用户进行排序(就像大多数聊天界面一样)。我正在使用Django私人聊天,该聊天使用this simple model发送消息。

考虑到先前的模型,我根本不知道如何编写order_by语句。注释,在这种情况下,子查询或其他查询表达式会很方便。

users = User.objects.filter(
    username__icontains=user,
    id__in=request.user.followers
).order_by( ????? )

1 个答案:

答案 0 :(得分:0)

您应该可以使用annotate之类的东西来做到这一点;

from django.db.models import Max

users = User.objects.filter(
    username__icontains=user,
    id__in=request.user.followers
).annotate(
    last_message=Max('messages_created')
).order_by('-last_message')

Max函数从Message模型中获得相关名称,找到here,然后从该模型的created时间戳中获得