当前位置: 首页 > 面试题库 >

如何在具有多对一关系的模型的Django管理员中添加可排序的计数列?

文彭祖
2023-03-14
问题内容

假设我有一个Book模型,其中包含指向Publisher模型的外键。

如何以一种可以使用内置排序的方式在Django admin中显示一列包含每个出版商出版的书籍数量的列?


问题答案:

我遇到了同样的问题(我无法更改模型的经理来添加慢速注释或联接)。此处两个答案的组合有效。@Andre非常接近,Django Admin支持仅修改admin的查询集,因此在此处应用相同的逻辑,然后使用admin_order_field属性。当然,你仍然需要将新的管理字段添加到list_display。

from django.db.models import Count

class EventAdmin(admin.ModelAdmin)
    list_display = (..., 'show_artist_count')

    def queryset(self, request):
    # def get_queryset(self, request):    for Django 1.6+
        qs = super(EventAdmin, self).queryset(request)
        return qs.annotate(artist_count=Count('artists'))

    def show_artist_count(self, inst):
        return inst.artist_count
    show_artist_count.admin_order_field = 'artist_count'


 类似资料:
  • 我想使用 sequelize 在我的节点应用程序中添加许多关联。我是续集ORM的新手。 我有一个eixsting模型user.js。我想创建新的模型项目,并添加想要多对多的关联 为此,我运行序列化创建表和迁移创建现在在关联部分我做的是多对多关联创建 我发现多个这些可以做到这一点 但是我写因为用户模型是存在的 我想知道的第二件事是自动创建还是需要手动创建?

  • 问题内容: 如何为同一个模型创建多个ModelAdmin,每个ModelAdmin进行不同的自定义并链接到不同的URL? 假设我有一个称为Posts的Django模型。默认情况下,此模型的admin视图将列出所有Post对象。 我知道我可以通过设置变量如list_display或在ModelAdmin中覆盖方法来以各种方式自定义页面上显示的对象列表: 默认情况下,可以通过URL访问。但是我想拥有同

  • 问题内容: 我想创建一个与用户类对象之间的多对多关系。 我有这样的事情: 问题是我是否可以在内部使用类引用。还是我必须使用欧洲工商管理学院的?还是有另一种(更好的)方法呢? 问题答案:

  • 本文向大家介绍Django 创建具有关系的模型,包括了Django 创建具有关系的模型的使用技巧和注意事项,需要的朋友参考一下 示例 多对一关系 最通用的选项。可以在您想要代表任何关系的任何地方使用 多对多关系 在内部,这是通过另一个表表示的。并ManyToManyField应放在将在表单上进行编辑的模型上。例如:Appointment将具有ManyToManyField被叫Customer,Pi

  • 问题内容: 我有一个Django应用。当以管理员用户身份登录时,我希望能够在URL中传递一个秘密参数,并使整个网站的行为就像我是另一个用户一样。 假设我有显示当前登录用户个人资料的URL 。我希望能够做类似的事情,并使基础视图相信我实际上是ID 123的用户(因此呈现 该 用户的个人资料)。 我为什么要那样? 仅仅因为重现仅出现在单个用户帐户中的某些错误要容易得多。 我的问题: 实现这样的最简单的

  • 问题内容: 我现在正在定义Django模型,我意识到模型字段类型中没有。我确定有办法做到这一点,所以我不确定我缺少什么。我基本上有这样的事情: 在这种情况下,每个可以有多个,但这种关系应该是单向的,因为我不需要从知道其拥有它本身,因为我可能有许多不同的对象自身的情况下,如为例: 我将用模型中的什么替换(不存在)以表示这种关系?我来自Hibernate / JPA,在这里声明一对多关系非常简单: 如