将原始查询更改为django模型

时间:2015-01-23 09:01:32

标签: django django-models django-queryset

我想使用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模型?

1 个答案:

答案 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)))