Django使用过滤条件作为计数来注释计数

时间:2013-01-30 06:11:08

标签: django django-models

我需要在模型“Mymodel”中获取字段“title”的重复条目,其中count大于2.这样我就可以从Mymodel中删除所有重复项。

我正在尝试执行如下的查询,但它抛出异常“AttributeError:'bool'对象没有属性'lookup'”

movies = Mymodel.objects.values('title')\
            .annotate(title_count=Count('title'), distint=True)\
            .filter(title_count__gt=2)

等效原始sql查询

SELECT count(title) as num_title, title from app_mymodel group by title having count(title) > 2;

我在这里找到了类似的问题,Filtering on the count with the Django ORM但它对我不起作用。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:6)

尝试不使用distinct的类似查询,因为我认为您无法将其传递给annotate

movies = Mymodel.objects.values('title')\
        .annotate(title_count=Count('title'))\
        .filter(title_count__gt=2)

答案 1 :(得分:-4)

抛出异常AttributeError,因为 Count 函数具有 distinct 参数,但 distint