【问题标题】:Django queries: how to annotate with a filtered count?Django 查询:如何使用过滤计数进行注释?
【发布时间】:2011-03-31 10:25:57
【问题描述】:

假设我有一个 Book 模型,其中包含一个语言字段和一个 Publisher 模型的外键。

目前,我在自定义出版商管理器中使用计数注释,以允许我向管理员添加一个可排序的列,其中包含每个出版商的图书数量。 (见How to add a sortable count column to the Django admin of a model with a many-to-one relation?)

我现在的问题是,我需要为以每种语言出版的书籍设置不同的列数。

有没有办法让注解服从相关模型的过滤器?

【问题讨论】:

    标签: sql django django-queryset


    【解决方案1】:

    您可以为此使用双下划线__。像这样的东西(sn-p取自OP链接的问题):

    class PublisherManager(models.Manager):
        def get_query_set(self):
            return super(PublisherManager,self).get_query_set().annotate(lang_count=Count('book__language'))
    

    【讨论】:

    • 感谢 Manoj,但它似乎不起作用 - 它正在计算具有 some 语言而不是 null/None 的书籍。
    • 啊。米杯。没有用实际数据进行测试。
    猜你喜欢
    • 2019-04-03
    • 2021-07-05
    • 2019-06-06
    • 2012-07-10
    • 2015-08-25
    • 2019-12-30
    • 1970-01-01
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多