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)
总结
在django框架系统后台管理的基础上,对自己创建应用的功能的一些自定义开发和配置。
文章详细介绍了如何在Django框架的Admin站点中进行自定义设置,包括列表页属性如显示字段、过滤器和搜索功能,以及添加、修改页的字段顺序和分组。此外,还涉及到了模型对象的操作,如关联模型的添加,列表显示的自定义方法,以及执行动作的位置调整。最后,文章提到了使用装饰器进行模型注册的方法,增强了后台管理的用户体验和效率。
1681

被折叠的 条评论
为什么被折叠?



