Django Models Group By - PullRequest
       13

Django Models Group By

2 голосов
/ 10 мая 2011

У меня есть этот простой запрос SQL -

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

Как мне получить это с помощью Django ORM (т.е. модели django). В основном я не понимаю, как это сделать GROUP BY?

Ответы [ 2 ]

6 голосов
/ 10 мая 2011

XML_table.objects.filter(suid='2').values('pid').annotate(docs=Count('pid')).order_by()

Docs

1 голос
/ 10 мая 2011

Это работает очень хорошо.

from collections import defaultdict
count = defaultdict( int )
for doc in XML_Table.objects.filter(suid='2'):
    count[doc.pid] += 1

Это не SQL.Часто он быстрее, чем SQL, потому что он не навязывает сортировку по большой таблице или результату объединения.

...