首页 > 其他分享 >django admin 后台管理展示配置

django admin 后台管理展示配置

时间:2023-02-04 22:33:39浏览次数:38  
标签:name 展示 admin webhook list django models 后台

展示数据库字段名称

定义数据库表models.py

定义数据库表 文件 modules.py
verbose_name : 数据库数据的字段中文配置
# 告警通知地址
class Webhook(models.Model):
    name = models.CharField('名称', max_length=32)  # verbose_name表示admin管理时显示的中文
    webhook_type_select = (
        (0, '飞书'),
        (1, '企微'),
    )

    webhook_type = models.IntegerField(choices=webhook_type_select, verbose_name="地址类型", default=0)
    url = models.CharField(max_length=256, verbose_name='http/https地址')  # verbose_name表示admin管理时显示的中文
    # title = "名称"
    #
    # def __unicode__(self):
    #     return self.title


    # admin后台项目中文显示设置
    class Meta:
        verbose_name = "告警地址"
        verbose_name_plural = "告警地址"
class_Meta:  verbose_name 表名的中文配置
class Meta:
        verbose_name = "告警地址"
        verbose_name_plural = "告警地址"

 admin 配置文件配置展示字段admin.py

from django.contrib import admin

# Register your models here.

from monitor01 import models


# admin 后台管理设置的展示列
class WebhookDisplay(admin.ModelAdmin):
    list_display = ('name', 'webhook_type', 'url')  # admin后台展示的字段设置,配合admin.py
    search_fields = ('name',)  # 配置搜索框

admin.site.register(models.Rule)
admin.site.register(models.Resource)
admin.site.register(models.Webhook, WebhookDisplay)
admin.site.register(models.AlarmList)

设置App(应用)为中文

 

 

在apps.py 重写admin 管理首页类配置

from django.apps import AppConfig

# # 取消默认的admin 管理首页配置
# class Monitor01Config(AppConfig):
#     default_auto_field = 'django.db.models.BigAutoField'
#     name = 'monitor01'
#     verbose_name = '客户资源报警配置'


# 重写类IndexConfig,然后再在app的__init__.py 进行配置
class AppAdminConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'monitor01'
    verbose_name = '大客户资源报警配置'       #这个就是汉化后的名称。

再在app的__init__.py 应用配置

# default_app_config的值来自apps.py的类名
default_app_config = 'monitor01.apps.AppAdminConfig'

一对一字段展示

通过admin.py 新建一个admin后台展示的类,继承admin.ModelAdmin; 属性list_display=('xxx',)定义展示的列,search_fields = ('xxx',)定义可搜索的列

外键字段通过定义函数来获取需要展示关了外表的字段

 

 

例: admin.py 自定义 AlarmListDisplay类; 类方法get_instance_name(self, obj): 获取展示字段值, list_display 填写函数名字符串,进行展示

列头名称配置:自定义类属性为  方法名.short_description = "列头名称"

# admin后台管理,报警规则展示字段
class AlarmListDisplay(admin.ModelAdmin):
    # admin后台展示字段
    list_display = ('alarm_time', 'get_instance_name', 'alarm_rule_id', 'alarm_value', 'now_status', 'recover_time', 'hold_minutes', )
    # admin后台可搜索字段
    search_fields = ('alarm_time', 'get_instance_name', 'get_rule_name', 'alarm_value', 'now_status', 'recover_time', 'hold_minutes', )

    # 展示一对一外键关联的资源
    def get_instance_name(self, obj):
        return obj.alarm_resource.name + '|' + obj.alarm_resource.instance_id
    # 展示资源的表头命名
    get_instance_name.short_description = '报警资源名|ID'

    # 展示一对一外键关联的规则名称
    def get_rule_name(self, obj):
        return obj.alarm_resource.name
    # 展示报警规则字段的表头命名
    get_rule_name.short_description = '报警规则名称'

 

多对多字段展示(大体同上)

区别在于类方法获取关联字段 obj.关联字段名.all() 获取所有的关联资源

# 展示多对多的字段
    def get_webhook_name(self,obj):
        webhook_list = []
        for w in obj.webhooks.all():  # obj.关联字段名.all() 获取所有的关联资源
            webhook_list.append(w.name)
        return ';'.join(webhook_list)

 

 

 admin.py 

参考地址:https://h4ck.org.cn/2019/12/django-admin-foreignkey-manytomanykey-list_display%E5%B1%95%E7%A4%BA/

# admin后台管理,报警规则展示字段
class RuleDisplay(admin.ModelAdmin):
    list_display = ('alarm_name', 'namespace', 'metric_name','warning_type','upper_limit', 'lower_limit', 'period','get_webhook_name')  # admin后台展示的字段设置,配合admin.py
    search_fields = ('alarm_name',)
    # 展示多对多的字段
    def get_webhook_name(self,obj):
        webhook_list = []
        for w in obj.webhooks.all():
            webhook_list.append(w.name)
        return ';'.join(webhook_list)
    get_webhook_name.short_description = '通知地址'

优化多对多数据选择框admin.py 配置filter_horizontal

appxxx/admin.py

from django.contrib import admin

# Register your models here.
from monitor01 import models


# admin 后台管理设置的展示列
class WebhookDisplay(admin.ModelAdmin):
    list_display = ('name', 'webhook_type', 'url')  # admin后台展示的字段设置,配合admin.py
    search_fields = ('name',)


# admin后台管理,报警规则展示字段
class RuleDisplay(admin.ModelAdmin):
    list_display = ('alarm_name', 'namespace', 'metric_name', 'warning_type','upper_limit', 'lower_limit', 'period','alarm_interval', 'max_alarm_times', 'get_instance_name', 'get_webhook_name')  # admin后台展示的字段设置,配合admin.py
    search_fields = ('alarm_name',)
    # 展示多对多的字段(关联的报警警通知地址)
    def get_webhook_name(self,obj):
        webhook_list = []
        for w in obj.webhooks.all():
            webhook_list.append(w.name)
        return ';'.join(webhook_list)
    get_webhook_name.short_description = '通知地址'

    # 展示多对多关联的资源
    def get_instance_name(self,obj):
        instance_list = []
        for i in obj.instances.all():
            instance_list.append(i.name)

        return '\r\n;'.join(instance_list)
    get_instance_name.short_description = '----绑定实例名列表----'
    filter_horizontal = ('instances', 'webhooks')  # 设置在admin后台新建或修改数据的 多对多字段跨左右窗口配置对应关系。
    # filter_vertical = ('instances',)  # 设置在admin后台新建或修改数据的 多对多字段跨上下窗口配置对应关系。
    # autocomplete_fields = ('instances','webhooks')
    # list_select_related=True


# admin后台管理,报警规则展示字段
class ResourceDisplay(admin.ModelAdmin):
    list_display = ('namespace', 'uid', 'name', 'instance_id')
    search_fields = ('namespace', 'uid', 'name', 'instance_id',)


# admin.register(models.Rule)
# admin.register(models.Resource)
# admin.register(models.Webhook)
# admin.register(models.AlarmList)
admin.site.register(models.Rule, RuleDisplay)

 

appxxx/models.py

# Rule 报警规则
class Rule(models.Model):
    ctime = models.DateTimeField(auto_now_add=True, null=True)
    namespace = models.CharField(max_length=32, verbose_name='资源类型(Namespace)', )   # verbose_name表示admin管理时显示的中文
    alarm_name = models.CharField(max_length=32, verbose_name='报警名称',)              # verbose_name表示admin管理时显示的中文
    metric_name = models.CharField(max_length=32, verbose_name='MetricName', )         # verbose_name表示admin管理时显示的中文
    instances = models.ManyToManyField('Resource',  verbose_name="实例列表", blank=True, null=True)

 

 

标签:name,展示,admin,webhook,list,django,models,后台
From: https://www.cnblogs.com/zhangmingda/p/17072816.html

相关文章

  • Django Ajax传值测试
    效果图如下:输入什么内容,点击提交按钮下面就添加新输入的数据,数据处理成JSON字符串传到后台,如果不用JSON,就是一个字符串,django目前暂用request.body对象取值。html文件:<!DOCT......
  • 【Django drf】视图类APIView之五层封装 ApiView的类属性 drf配置文件
    目录ApiView的类属性drf配置文件之查找顺序drf之请求APIView之请求相关配置drf之响应APIView之响应相关配置Response对象属性视图类序列化类路由基于GenericAPIview写五......
  • Django内置权限系统源码解读
    前言之前有篇文章​​Django自定义认证系统原理及源码分析解读​​带大家分析解读了Django的认证逻辑,而且我们也知道认证是基础,认证通过之后,用户登录到系统,能看到那些,......
  • 利用mockjs模拟后台数据
    在Vue项目中,有些数据不是后台服务器返回的,所以我们需要在本地建立一个假服务器来存储一些数据安装mockjs终端输入: npmimockjs准备本地数据......
  • Windows设置右键以管理员身份打开CMD(right click open command prompt runas adminis
    打开注册表编辑器win+r输入regedit打开注册表编辑器找到计算机\HKEY_CLASSES_ROOT\Directory\Background\shell新建runas项选中shell然后右键新建项,命名为runas选......
  • django框架之drf(部分讲解)
    一、反序列化类校验部分源码解析(了解即可)反序列化校验,什么时候,开始执行校验?视图类中的ser.is_valid(),就会执行校验,校验通过返回True,不通过返回False源码入口#......
  • Django框架之drf:5、反序列化器校验部分源码分析、断言、drf之请求与响应、视图组件介
    Django框架之drf目录Django框架之drf一、反序列化类校验部分源码解析二、断言三、drf之请求1、Request能够解析的前端传入编码格式2、Request类中的属性和方法四、drf之......
  • python django项目创建
    目标本文为创建django项目的第一步操作、实现项目创建、模块创建、虚拟环境指定、并实现健康检查接口一、环境准备安装python参考官方文档:https://www.python.org/down......
  • djangorestframework开发配置
    django和restframework结合。对api再次封装返回结果形如。非drf浏览器状态码返回基础模型封装分页格式调整{"msg":'success',"code":200,"data":[]}......
  • Django Meta中proxy、abstract、managed使用方法
    目录DjangoMeta中proxy、abstract、managed使用方法proxyabstractmanagedDjangoMeta中proxy、abstract、managed使用方法proxy使用多表继承时,每个子类模型都会创建......