将原始查询更改为 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)))
我想使用 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)))