Django 查询:如何使用过滤后的计数进行注释?

发布于 2024-09-14 19:45:29 字数 354 浏览 5 评论 0原文

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

目前,我在自定义出版商管理器中使用计数注释,以允许我向管理添加一个可排序列,其中包含每个出版商的图书数量。 (参见如何向具有多对一关系的模型的 Django 管理添加可排序的计数列?

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

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

Suppose I have a Book model with a language field and a foreign key to a Publisher model.

Currently I use a Count annotation in a custom Publisher manager to allow me to add to the admin a sortable column with the number of books by each publisher. (see How to add a sortable count column to the Django admin of a model with a many-to-one relation? )

My problem now is that I need to have a different column count for the books published in each language.

Is there any way to make the annotation subject to a filter of the related model?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦魇绽荼蘼 2024-09-21 19:45:29

您可以使用双下划线 __ 来实现此目的。像这样的东西(摘自OP链接的问题的片段):

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

You can use the double underscore __ for this purpose. Something like this (snippet taken from question linked to by OP):

class PublisherManager(models.Manager):
    def get_query_set(self):
        return super(PublisherManager,self).get_query_set().annotate(lang_count=Count('book__language'))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文