Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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模型分组_Python_Django_Django Models_Group By_Django Orm - Fatal编程技术网

Python Django模型分组

Python Django模型分组,python,django,django-models,group-by,django-orm,Python,Django,Django Models,Group By,Django Orm,我有一个简单的SQL查询- SELECT pid, COUNT(*) AS docs FROM xml_table WHERE suid='2' GROUP BY pid; 我如何使用Django ORM(即Django模型)实现这一点。基本上,我不知道如何使用分组方式?XML\u table.objects.filter(suid='2')。values('pid')。annotation(docs=Count('pid'))。order\u BY() 这非常有效 from collecti

我有一个简单的SQL查询-

SELECT pid, COUNT(*) AS docs FROM xml_table WHERE suid='2' GROUP BY pid;

我如何使用Django ORM(即Django模型)实现这一点。基本上,我不知道如何使用
分组方式

XML\u table.objects.filter(suid='2')。values('pid')。annotation(docs=Count('pid'))。order\u BY()


这非常有效

from collections import defaultdict
count = defaultdict( int )
for doc in XML_Table.objects.filter(suid='2'):
    count[doc.pid] += 1
这不是SQL。通常它比SQL更快,因为它不会对大表或联接结果进行排序。

我会用“经常”来反驳。任何要使用这个的人都应该先测试一下。我来这里是因为我需要超过一百万行的计数。你的查询集必须返回所有的百万。此外,您将返回整行并对其进行实例化--如果按此方法执行,a.values()应该会快得多。