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)

总结

在django框架系统后台管理的基础上,对自己创建应用的功能的一些自定义开发和配置。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JSON_L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值