【问题标题】:change raw query into django models将原始查询更改为 django 模型
【发布时间】:2015-03-22 06:38:18
【问题描述】:

我想使用 django 模型功能来执行这个 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 模型?

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

    您不应同时使用.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)))
    

    【讨论】:

      猜你喜欢
      • 2017-05-04
      • 1970-01-01
      • 2011-06-24
      • 2016-10-20
      • 2022-08-18
      • 2019-06-11
      • 1970-01-01
      • 2018-11-08
      • 2015-11-21
      相关资源
      最近更新 更多