将原始查询更改为 Django 模型

change raw query into django models

我想使用 django 模型功能来执行此 sql 查询。

SELECT COUNT(DISTINCT ques_id), title FROM contest_assignment WHERE grp_id = 60 GROUP BY title;

我试过了,但没有给我正确的结果:

from django.db.models import Count assignment.objects.values_list('title').annotate(count=Count('ques')).values('title', 'count')

如何使用 Django 模型?

您不应同时使用 .values().values_list()count 字段隐式添加到返回的字段集中。

Django 通过使用 .annotate(count=Count('<field>', distinct=True)) 支持 COUNT(DISTINCT <field>) 查询。这会给您留下以下查询:

(assignment.objects.filter(grp_id=60).values('title')
           .annotate(count=Count('ques_id', distinct=True)))