过滤注释而不删除结果

时间:2011-02-10 23:55:19

标签: django django-database django-aggregation

考虑使用注释的模型和查询,例如Django文档中的以下示例: http://docs.djangoproject.com/en/dev/topics/db/aggregation/

Publisher.objects.filter(book__rating__gt=3.0).annotate(num_books=Count('book'))

此查询的结果将仅包含与过滤器匹配的对象(即book_rating大于3.0),并且这些对象已被注释。但是,如果我希望查询包含所有对象,但只有 annotate 对象与过滤器匹配(或者例如用0注释它们),该怎么办?或者这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

不,你不能这样做 - 因为那不是底层SQL的工作方式。

我唯一能想到的是做两个查询,一个带有过滤器/注释,一个没有,然后在Python中迭代它们,将注释附加到未过滤列表中的匹配对象。