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框架系统后台管理的基础上,对自己创建应用的功能的一些自定义开发和配置。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐