zoukankan      html  css  js  c++  java
  • Django Admin Cookbook-7如何覆盖Django Admin后台模板

    7.如何在列表视图页面上显示计算字段?

    假设你admin.py中有一个OriginAdmin管理模型,如下所示:

    @admin.register(Origin)
    class OriginAdmin(admin.ModelAdmin):
        list_display = ("name",)
    

    除了名称之外,我们还想显示每个Origin的Hero英雄数量和Villain反派数量。但这不是Origin模型的DB字段。你可以通过以下两种方式实现此操作。

    7.1 在模型中添加方法

    你可以models.py的Origin模型中添加两个方法:

    def hero_count(self,):
        return self.hero_set.count()
    def villain_count(self):
        return self.villain_set.count()
    

    并更改的list_display为:list_display = ("name", "hero_count", "villain_count")

    7.2 向ModelAdmin中添加方法

    如果你不想将方法添加到模型中,则可以将方法添加到admin.py该模型的ModelAdmin中。

    def hero_count(self, obj):
        return obj.hero_set.count()
    def villain_count(self, obj):
        return obj.villain_set.count()
    

    同样修改list_display为:list_display = ("name", "hero_count", "villain_count")

    7.3 字段计算的性能考虑

    使用以上两种方法之一,每个对象将运行两个exta查询(每个计算字段一个)。你可以在[Django Admin后台中的如何优化查询]一章中找到如何优化此设置 。。

    进行任何这些更改后,Admin后台效果如下所示:

    返回目录

  • 相关阅读:
    android常用的Application类
    Android一些问题的解决方案
    MakeFile相关
    Android源码与设计模式之notifyDataSetChanged()方法与观察者模式
    Activity启动模式与onNewIntent()简述
    (转)eval与迭代
    ADB命令
    其他常用工具类
    文件操作常用工具方法
    [TJOI2007] 可爱的质数
  • 原文地址:https://www.cnblogs.com/superhin/p/12166690.html
Copyright © 2011-2022 走看看