Django框架之自定义管理页面

Django框架Admin站点管理一些默认的显示和功能包括语言都可以自定义设置处理,以贴近我们的实际业务。

属性说明

列表页属性

 

 配置文件myapp/admin.py

from django.contrib import admin
from .models import Grades, Students


# Register your models here.

# 注册班级管理属性
class GradesAdmin(admin.ModelAdmin):
    # 列表页属性
    # 显示字段
    list_display = ['id', 'name', 'boy_num', 'girl_num', 'create_time']
    # 过滤器
    list_filter = ['id', 'name']
    # 搜索
    search_fields = ['id', 'name']
    # 分页
    list_per_page = 1


# 注册班级管理属性
class StudentsAdmin(admin.ModelAdmin):
    # 列表页属性
    # 显示字段
    list_display = ['id', 'name', 'gender', 'age', 'desc', 'isDel']
    # 过滤器
    list_filter = ['id', 'name']
    # 搜索
    search_fields = ['id', 'name']
    # 分页
    list_per_page = 2


admin.site.register(Students, StudentsAdmin)
admin.site.register(Grades, GradesAdmin)

 

效果如下:

设置前

 

属性设置后

 

添加、修改页属性

 

以新增学生来演示 StudentAdmin新增、修改属性设置

# 属性的先后顺序
fields = ('name', 'grades', 'gender', 'age', 'desc', 'isDel')

 

 效果如下:

原始顺序

 修改后

 

设置分组

注意:fieldsets与fields不能同时使用

# 属性的先后顺序
# fields = ('name', 'grades', 'gender', 'age', 'desc', 'isDel')

# 给属性分组
fieldsets = (
    ('学生信息', {'fields': ('name', 'gender', 'age', 'desc', 'isDel')}),
    ('班级信息', {'fields': ('grades',)}),
)

 分组情况如下:

 

自定义显示班级

配置文件myapp/models.py

新增__str__方法

class Grades(models.Model):
    """ 班级表模型 """

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)
    boy_num = models.IntegerField()
    girl_num = models.IntegerField()
    create_time = models.DateTimeField()
    
    def __str__(self):
        return self.name

 效果

 

关联模型对象操作

需求:创建班级的时候 添加2个学生

myapp/admin.py

# 关联模型对象操作
class StudentsInfo(admin.TabularInline):
    model = Students
    extra = 2


# 注册班级管理属性
class GradesAdmin(admin.ModelAdmin):
    inlines = [StudentsInfo]

 效果

 

列表显示自定义

学生表自定义显示性别

# 注册班级管理属性
class StudentsAdmin(admin.ModelAdmin):
    # 列表页属性

    def gender_name(self):
        if self.gender:
            return '女'
        else:
            return '男'
    gender_name.short_description = '性别'

    # 显示字段
    list_display = ['id', 'name', gender_name, 'age', 'desc', 'isDel']

 效果如下:

 

执行动作位置

用来控制列表页-动作执行功能块位置显示。

关闭上面的执行动作,打开下面的执行动作。

# 注册班级管理属性
class StudentsAdmin(admin.ModelAdmin):
    # 执行动作位置
    actions_on_top = False
    actions_on_bottom = True

 效果如下:

使用装饰器注册

myapp/admin.py

隐藏原有注册 改为顶部装饰器注册。

即用 @admin.register(模型) 替换原有注册。

# 关联模型对象操作
class StudentsInfo(admin.TabularInline):
    model = Students
    extra = 2


# 注册班级管理属性
@admin.register(Grades)
class GradesAdmin(admin.ModelAdmin):
    inlines = [StudentsInfo]

    # 列表页属性
    # 显示字段
    list_display = ['id', 'name', 'boy_num', 'girl_num', 'create_time']
    # 过滤器
    list_filter = ['id', 'name']
    # 搜索
    search_fields = ['id', 'name']
    # 分页
    list_per_page = 1


# 注册班级管理属性
@admin.register(Students)
class StudentsAdmin(admin.ModelAdmin):
    # 列表页属性

    def gender_name(self):
        if self.gender:
            return '女'
        else:
            return '男'
    gender_name.short_description = '性别'

    # 显示字段
    list_display = ['id', 'name', gender_name, 'age', 'desc', 'isDel']
    # 过滤器
    list_filter = ['id', 'name']
    # 搜索
    search_fields = ['id', 'name']
    # 分页
    list_per_page = 2

    # 执行动作位置
    actions_on_top = False
    actions_on_bottom = True

    # 属性的先后顺序
    # fields = ('name', 'grades', 'gender', 'age', 'desc', 'isDel')
    # 给属性分组
    fieldsets = (
        ('学生信息', {'fields': ('name', 'gender', 'age', 'desc', 'isDel')}),
        ('班级信息', {'fields': ('grades',)}),
    )


#admin.site.register(Students, StudentsAdmin)
#admin.site.register(Grades, GradesAdmin)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

算法训练 | Day41动态规划

343. 整数拆分 思路: 确定dp数组(dp table)以及下标的含义:dp[i]:分拆数字i,可以得到的最大乘积为dp[i]。 确定递推公式:dp[i] max(dp[i], max((i - j) * j, dp[i - j] * j)) 可以想 dp[i]最…

产品推荐丨智慧水利行业应用终端+云平台

智慧水利是我国智慧城市建设的重要延伸,是新时代水利现代化的战略目标,贯穿于防汛抗旱减灾、水资源合理配置和高效利用、水资源和河湖健康保障等体系。随着水利技术的集成发展与场景的成熟应用,我国水利现已完成从自动化阶段到信息化阶段的过…

会议论文与期刊论文的写作差异

AI领域的会议论文和期刊论文在撰写方法上存在一定的差异,读者需要理解这些差异,才能做到有的放矢,提高论文的命中率。如果按照会议论文的风格来写期刊论文,或者按照期刊论文的风格来写会议论文,论文命中的概率将大大降…

离散数学期末复习第一章 数理逻辑

离散数学 离散数学是研究各种各样的离散量的结构及离散量之间的关系一门学科,是计算机科学中基础理论的核心课程。 什么是连续变量? 在一定区间内可以任意取值的变量叫连续变量,其数值是连续不断的,相邻两个数值可作无限分割&a…

【社区图书馆】-《科技服务与价值链》总结

【为什么研究价值链】 价值链及价值链协同体系是现代产业集群的核心枢纽,是推进城市群及产业集群化、服务化、生态化发展的纽带。因而推进价值链协同,创新发展价值链协同业务科技资源体系,既是科技服务业创新的重要方向,也是重塑生…

第3章-运行时数据区

此章把运行时数据区里比较少的地方讲一下。虚拟机栈,堆,方法区这些地方后续再讲。 转载https://gitee.com/youthlql/JavaYouth/tree/main/docs/JVM。 运行时数据区概述及线程 前言 本节主要讲的是运行时数据区,也就是下图这部分&#xff0c…

ASO优化之如何回复Google Play评论

应用的平均评分会影响 Google Play 商店优化 和应用的 Google Play 排名。应用的评分越高,我们在搜索结果中的排名就越靠前。因此,当应用处于 4 星评级范围内时,它会被更多 Google Play 商店的访问者看到和发现。我们可以使用应用雷达中的评级…

听我一句劝,别去外包,干了三年,废了....

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

SAP ABAP MARA-MSBOOKPARTNO 制造商登记部分编号

BAPI_MATERIAL_SAVEDATA CLIENTDATA结构无此字段。 DATA:LS_TE_MARA TYPE BAPI_TE_MARA. DATA:LS_TE_MARAX TYPE BAPI_TE_MARAX. DATA:LT_BAPIPAREX TYPE TABLE OF BAPIPAREX. DATA:LS_BAPIPAREX TYPE BAPIPAREX. …

学生无线耳机哪款好?两百左右适合学生党的无线耳机推荐

学生无线耳机哪款好?现如今,学生党也成为了蓝牙耳机的主要用户群体之一。接下来,我来给学生群体推荐几款两百左右的无线耳机,一起来看看吧。 一、南卡小音舱Lite2蓝牙耳机 参考价:299 南卡小音舱的音质和佩戴体验都在…

传统制造企业如何数字化转型?中国减速机Top 1企业给出这份答案

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 数字中国建设正在如火如荼地展开,百业千行也都在寻求自身业务与数字化的深度融合。 2022年制造业增加值占GDP比重约为30%,在数字经济赋能新发展的当下,制造业成为数字技术重点实施落地的载…

Authing 入选《2022年度中国高科技高成长企业》榜单

​ 近日,Authing 入选【2022 年度中国高科技高成长企业系列榜单 】- 【云原生高成长企业榜】,该榜单由【第一新声】联合【天眼查】发起的“数字中国”系列之 2022 年度中国高科技高成长企业系列榜单发布,该榜单旨在发现和挖掘被资本市场关注&…

优秀的FAQ示例及FAQ页面制作技巧

在网页中问答设计中,虽然说客服会话更有人情味、解决效率更高,但从实际的客户使用情况和使用偏好来看,越来越多的人更喜欢自助服务。数据显示,约67%的受访者会优先选择自助服务,91%的客户使用过帮助中心来解决问题。可…

薪资17K是一个怎样的水平?来看看98年测试工程师的面试全过程…

我的情况 大概介绍一下个人情况,男,本科,三年多测试工作经验,懂python,会写脚本,会selenium,会性能,然而到今天都没有收到一份offer!从年后就开始准备简历,年…

【JAVA-模块五 数组】

JAVA-模块五 数组 一、数组(一维)1.1数组是什么?1.2java中数组静态初始化:(存)两种定义格式:数组初始化格式:静态初始化后,打印数组名: 1.3 数组元素访问&…

MySQL高级篇——存储引擎和索引

导航: 【黑马Java笔记踩坑汇总】JavaSEJavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线牛客面试题_java黑马笔记 目录 一、存储引擎 1.1、查看、设置存储引擎的命令 1.2、InnoDB引擎 1.2.1、介绍 1.2.2、优势 1.2.3、InnoDB事务的ACID特性…

SpringCloud --- Eureka注册中心

一、场景 假如我们的服务提供者user-service部署了多个实例,如图 思考几个问题: order-service在发起远程调用的时候,该如何得知user-service实例的ip地址和端口? 有多个user-service实例地址,order-service调用时该…

【c语言】带你快速理解函数的传值和传址

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ…

Linux 内存 pt.1

哈喽大家好&#xff0c;我是咸鱼 今天我们来学习一下 Linux 操作系统核心之一&#xff1a;内存 跟 CPU 一样&#xff0c;内存也是操作系统最核心的功能之一&#xff0c;内存主要用来存储系统和程序的指令、数据、缓存等 关于内存的学习&#xff0c;我会尽量以通俗易懂的方式…

适合学生的平价蓝牙耳机有哪些?学生平价蓝牙耳机推荐

随着蓝牙耳机的使用越来越频繁&#xff0c;近几年也出现了很多优质的蓝牙耳机&#xff0c;不仅有着超高的性价比&#xff0c;而且使用体验也有了很大的突破。接下来&#xff0c;我来给大家推荐几款适合学生使用的平价蓝牙耳机&#xff0c;可以当个参考。 一、南卡小音舱Lite2蓝…