管理网站

时间:2016-03-30 14:19:52

标签: python django

我尝试存档的是在默认管理视图页面上显示有关模型的动态信息,例如计数,其中列出了所有已注册的模型。

我现在以非常强硬的方式做到这一点,比如:

class x(object):
    def __unicode__(self, *args, **kwargs):
        return u"Items (%i items)" % SteamItem.objects.count()
class Item(models.Model)
    ...
    class Meta:
        verbose_name_plural = x() 

有没有办法以更好的方式做同样的事情,而无需编辑管理模板?
如果编辑管理模板是唯一的方法,我会欣赏一些提示从哪里开始我的搜索。

1 个答案:

答案 0 :(得分:1)

反思django admin code我发现不幸的是模型类没有传递给模板上下文 - 所以你不能轻易查询对象数。每个模型传递给模板的内容是:

model_dict = {
    'name': capfirst(model._meta.verbose_name_plural),
    'object_name': model._meta.object_name,
    'perms': perms,
}

您可以做的是覆盖AdminSite._build_app_dict以包含模型类本身,使用以下方法覆盖模板中的默认索引模板和公正查询:

{{ model_class.objects.count }}

默认模板为admin/index.html,但可以在每个管理网站的基础上进行配置,如上面提到的类中所示。