Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ORM中的分组_Python_Django_Orm_Group By_Aggregate - Fatal编程技术网

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上显示列表中的所有聊天。