我已阅读此主题:Django query: Count and Group BY并阅读django queryset doc
我找到了两种实现SQL COUNT GROUP BY
的方法。
(1)distinct
note_list = Note.objects.filter(user=user).order_by('tag').values('tag').distinct()
for note in note_list:
print note
为我工作。
(2)annotate
qs = Note.objects.filter(user=user).annotate(Count('tag'))
for e in qs:
print e.tag__count
NOT 工作。 count
总是1
。
当我使用distinct
但不使用order_by
时,它也无效。我曾尝试过其他方式,也没有用过。
django版本:1.8
MySQL版本:5.6.29
更新
Note.objects.filter(user=user).order_by('tag').values('tag').annotate(count=Count('tag'))
对我有用!
答案 0 :(得分:0)
您应指定分组字段。在此示例中,注释将按标记分组:
Note.objects.filter(用户=用户).values('标签&#39)。注释(计数(' ID'))
答案 1 :(得分:0)
也许你没有尝试过,但还有另一种方法可以做到这一点,使用.count()方法(e.q。https://docs.djangoproject.com/en/1.9/ref/models/querysets/#count)
/var/run/nginx/nginx.pid
这将返回按标签分组的确切笔记数。
我建议您使用POSTGRESQL,而MySQL则允许您更轻松地执行此操作:
Note.objects.filter(user=user).order_by('tag').distinct().count()