从ManyRelatedManager返回的过滤器查询集

时间:2016-11-29 04:57:39

标签: python django

我有一个模型的查询集" A"我尝试做一些值/注释计算。型号" A"与模型B有一个ManyToMany关系。从模型" A",我希望能够访问" B"的过滤子集。基于" B"中的字段的模型。我如何改变我的模型" A"支持这种模式?

虚拟例子:

{{1}}

我想回复一篇关于文章的出版物和读者总数的查询,仅针对数字的出版物。

1 个答案:

答案 0 :(得分:1)

了解conditional aggregation

from django.db.models import Sum, Case, When, IntegerField

Article.objects.annotate(
    total_readership=Sum(
        Case(
            When(published_in__is_digital=True, then=1),
            output_field=IntegerField()
        )
    )
)