我想使用django models功能来执行此sql查询。
SELECT COUNT(DISTINCT ques_id), title FROM contest_assignment WHERE grp_id = 60 GROUP BY title;
我试过这个,但它没有给我正确的结果:
来自django.db.models导入计数 assignment.objects.values_list('title')。annotate(count = Count('ques'))。values('title','count')
我如何使用django模型?
答案 0 :(得分:1)
您不应同时使用.values()
和.values_list()
。 count
字段隐式添加到返回的字段集中。
Django使用COUNT(DISTINCT <field>)
支持.annotate(count=Count('<field>', distinct=True))
查询。这将使您得到以下查询:
(assignment.objects.filter(grp_id=60).values('title')
.annotate(count=Count('ques_id', distinct=True)))