Django框架之自定义管理页面

news2024/9/19 9:33:05

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)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

收废品小程序开发中的常见问题及解决方法

常见问题 1. 用户界面设计 小程序的用户界面设计至关重要。设计师需要在用户界面中提供清晰的指示,以便用户可以轻松地找到他们需要的功能。同时,设计师还需要确保用户界面的整体风格与公司的品牌形象相符。 2. 功能开发 开发小程序的功能需要考虑到…

深入学习RabbitMQ五种模式(一)

1.安装erlang 下载otp_win64_25.3.exe https://www.erlang.org/downloads erlang安装完成,需要配置erlang环境变量 ERLANG_HOMEE:\software\Erlang OTPPATH%PATH%;%ERLANG_HOME%\bin; 2.安装RabbitMQ 下载rabbitmq-server-3.11.13.exe https://www.rabbitmq.com/dow…

交叉验证之KFold和StratifiedKFold的使用(附案例实战)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

力扣---LeetCode88. 合并两个有序数组

文章目录 前言88. 合并两个有序数组链接:方法一:三指针(后插)1.2 代码:1.2 流程图:方法二:开辟新空间2.1 代码:2.2 流程图:2.3 注意: 总结 前言 “或许你并不熠熠生辉甚至有点木讷但…

POSTGRESQL COPY 命令原理与加速数据 导入提高速度200%以上

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

vue2+vue3——107+

vue2vue3——107 vue2 Vuex工作原理图【23:54】vue2 搭建Vuex环境【26:40】插入 话题npm i vue3 store / index.js修改 vue2 求和案例_vuex版【22:39】vue2 vuex开发者工具的使用【23:21】vue2 getters配置项【07:55】vue2 mapState与mapGetters【25:20】vue2 mapActions与mapM…

egg3.0连接egg-mongoose操作数据库,删除一条数据、批量删除数据

删除一条数据 定义service app\service\role.js async delItem() {const { ctx } this;let results;await ctx.model.Role.deleteOne({ name: test-S3 }).then(res > {console.log(results-del-success, res);results res?.deletedCount > 0;}).catch(err > {con…

系统分析师之软件工程(十二)

目录 一、 软件开发生命周期 1.1 开发阶段工作细分 二、软件开发模型 2.1 瀑布模型 2.2 原型模型 2.3 增量模型与螺旋模型 2.4 V模型 2.5 喷泉模型 2.6 快速应用开发模型RAD 2.7 构件主装模型 2.8 统一过程 2.9 敏捷方法 三、逆向工程 四、净室软件工程 一、 软件…

为何C语言的函数调用要用到堆栈,而汇编却不需要自定义栈

一 ≠ 汇编不需要堆栈 汇编中一般不初始化,也就是直接使用系统的堆栈而已,自己定义堆栈还是要初始化的。 之前看了很多关于uboot的分析,其中就有说要为C语言的运行,准备好堆栈。 而自己在Uboot的start.S汇编代码中&#xff0c…

crm-day04 分页查询市场活动,刷新市场活动列表

分页插件 分页这个组件前端要写也很麻烦&#xff0c;而且与业务逻辑代码无关&#xff0c;因此我们引入一个分页查询的插件。 进行jsp测试 三大步骤&#xff1a; 1、引入相关的包 2、创建容器来保存插件的运行结果 容器是<input typetext/>或者div。 3、容器加载完成后&a…

猫猫与主人

时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld 对猫猫按照友善值进行排序 对主人按照期望友善值进行排序 就可以找到能收养猫猫的主人 对主人的友善值取一个max最后跟猫猫的期望友…

用大佬开发的模板做了“智慧水务”,终于可以和老板谈加薪喽!

为什么各个行业要进行数字化转型&#xff1f; 其实很好理解&#xff0c;这其中很大一部分属于传统行业&#xff0c;以往运营方式较为粗放&#xff0c;信息标准化程度偏低&#xff0c;但同时也意味着数字化的历史包袱轻&#xff0c;此时跟上潮流进行数字化转型&#xff0c;有利于…

美颜SDK的性能测试和优化方案

美颜SDK作为美颜相机、短视频等应用的核心技术之一&#xff0c;对于提升用户体验和增加应用商业价值起到了至关重要的作用。然而&#xff0c;如何对美颜SDK进行性能测试和优化&#xff0c;成为了广大应用开发者们所面临的一大难题。很多开发者也曾经向小编提起过应该如何着手优…

nodejs+python+php+springboot+vue 校园安全车辆人员出入安全管理系统

拟开发的校园安全管理系统通过测试,确保在最大负载的情况下稳定运转,各个模块工作正常,具有较高的可用性。系统整体界面简洁美观,用户使用简单,满足用户需要。在因特网发展迅猛的当今社会,校园安全管理系统必然会成为在数字信息化建设的一个重要方面。 本文阐述了开发的校园安全…

马斯克要告微软 拒绝AI训练“白嫖”数据

“现在是诉讼时间。”4月20日&#xff0c;推特被微软踢出其数字营销平台后&#xff0c;新掌门人马斯克立马发推回击称&#xff0c;微软用推特的数据做“非法训练”。这一怼&#xff0c;直接揭开了AI大模型开发商与数据源的利益之争。 此前&#xff0c;在线社区论坛Reddit与程序…

黑马redis实战篇-商铺缓存

目录 五、实战篇-商户查询缓存 5.1 什么是缓存 5.2 添加Redis缓存 1、不添加redis时&#xff0c;数据查询的作用模型&#xff1a; 2、添加redis时&#xff0c;数据查询的作用模型&#xff1a; 3、业务流程图&#xff1a;​编辑 4、代码实现 5、练习题 5.3 缓存更新策略…

【Android FrameWork (三)】- SystemServer

文章目录 知识回顾启动第一个流程initZygote的流程 前言源码分析1.system_server2.SystemServer.main3,startBootstrapServices4,startService 拓展知识LoadApkcontext 对于Android context 大家是怎么理解的&#xff1f;LocalServices.java: addServece方法中 ArrayMap和HashM…

Matlab 绘制双纵轴三纵轴图

三纵轴图 三坐标的图在前文中有所介绍&#xff1b;这次主要讲绘制双轴。 matlab 绘制三坐标&#xff08;轴&#xff09;图 绘制双纵轴图: yyaxis 简单用法 在MATLAB中&#xff0c;yyaxis可以用于绘制具有两个不同y轴的图形。以下是yyaxis的简单用法&#xff1a; 1.首先&am…

UG NX二次开发(C#)-UIStyler-找不到指定的Dlx文件的错误解决方法

1、项目场景: 在UG NX二次开发过程中,我们为了更好的操作,采用UI Styler设计了软件界面,然后按照UI Styler的编程流程成功的生成了dll,但是在采用Ctrl+U或者用“文件“->“执行”->"NX Open"执行dll时,遇到如下图所示的错误页面,提示内容为:找不到指定…

成就更强大的自己

每一次低谷&#xff0c;都会酝酿向上的力量。 每一次痛苦过后&#xff0c;都会洗涤掉心理深处的灰尘。 人生的路上&#xff0c;坎坷前行&#xff0c;只有保持积极向上的态度&#xff0c;才能把坎坷化为坦途。 走过一段路后&#xff0c;才发现&#xff0c;当内心强大、修养、爱…