【问题标题】:Filtered annotations without removing results过滤注释而不删除结果
【发布时间】:2011-06-25 05:58:37
【问题描述】:

考虑使用注释的模型和查询,例如 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),并且这些对象已被注释。但是,如果我希望查询包含 all 对象,但只包含匹配过滤器的 annotate 对象(或者例如用 0 注释它们)怎么办?或者这甚至可能吗?

【问题讨论】:

    标签: django django-database django-aggregation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-22
      • 2011-10-18
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 2017-03-15
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多