Python Django ORM中的分组
我想在我的应用程序中获取两个用户之间的“聊天”次数,我有一个名为“消息”的表,其中包含:Python Django ORM中的分组,python,django,orm,group-by,aggregate,Python,Django,Orm,Group By,Aggregate,我想在我的应用程序中获取两个用户之间的“聊天”次数,我有一个名为“消息”的表,其中包含: sender_user | reciever_user | contain | date 我想做一个查询,为我提供两个不同用户之间的所有消息,我知道在SQL中我需要使用groupby,但是如何使用Django ORM获得消息列表?你知道吗 注意:sender\u user和receiver\u user是user表的实例)在描述的情况下,您不需要“分组依据”。您需要对发送方和接收方用户进行筛选—这相当于S
sender_user | reciever_user | contain | date
我想做一个查询,为我提供两个不同用户之间的所有消息,我知道在SQL中我需要使用groupby
,但是如何使用Django ORM获得消息列表?你知道吗
注意:sender\u user
和receiver\u user
是user
表的实例)在描述的情况下,您不需要“分组依据”。您需要对发送方和接收方用户进行筛选—这相当于SQL“WHERE”子句。您也可以按日期订购
Message.objects.filter(sender_user='sender', receiver_user='receiver')
您可以使用queryset的annotate方法。anotate方法是django中group by子句的抽象形式 您的查询可能类似于:
User.objects.filter(message_set__sender=me).annotate(message_count=Count('message'))
参考资料:遵循此操作-这可能是您的问题的解决方案是的,我尝试过,但我想在单个对象中获取接收者和发送者的信息,而不仅仅是id和记录数。你知道吗?不知道,因为我知道“聊天”列表(两个用户之间的消息)涉及request.user,所以你说的“WHERE”只给我一个单独的“聊天”。我想我不是很具体。如果我这样做,我只会得到我和其他人的“聊天”。我想获得我参与的所有聊天。然后根据您需要的用户使用sender\u user或receiver\u user。按发送方用户和接收方用户对结果进行排序。您已经指定了任何需要分组的要求。是的,但这将为我提供所有“消息”,我只需要“聊天”,因为我想在html上显示列表中的所有聊天。