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后台效果如下所示:

    返回目录

  • 相关阅读:
    提出的问题
    2020软件工程作业02
    2020软件工程作业01
    我当社畜这些年-1
    Electron-vue实现后台多进程(二)
    Electron-vue实现后台多进程(一)
    pytorch自定义loss函数的几种方法
    XGBoost原理
    transformers的bert预训练模型的返回值简要描述
    sklearn下的ROC与AUC原理详解
  • 原文地址:https://www.cnblogs.com/superhin/p/12166690.html
Copyright © 2011-2022 走看看