Django快速入门 —— 自定义管理页面 (图书管理系统)

自定义管理页面

目录

自定义管理页面

自定义模型加入后台管理

体验便捷的管理功能

自定义管理页面

编写后台管理页文件

列表页属性

效果展示

添加、修改页属性

关联对象


自定义模型加入后台管理

打开 bookApp/admin.py 文件,注册模型。但是我们的应用在哪呢?它没在索引页面里显示。

只需要再做一件事:我们得告诉管理,Book、Hero 对象需要一个后台接口。打开 bookApp/admin.py 文件,把它编辑成下面这样:

bookApp/admin.py :

from django.contrib import admin
from bookApp.models import Book, Hero

# Register your models here.
admin.site.register([Book, Hero])

体验便捷的管理功能

现在我们向管理页面注册了Book、Hero 类。Django 知道它应该被显示在索引页里:

自定义管理页面

编写后台管理页文件

通过  admin.site.register(Book, BookAdmin)  注册 Book 模型,Django 能够构建一个默认的表单用于展示。通常来说,你期望能自定义表单的外观和工作方式。你可以在注册模型时将这些设置告诉 Django。

你需要遵循以下流程——创建一个模型后台类,接着将其作为第二个参数传给 admin.site.register() ——在你需要修改模型的后台管理选项时这么做。

  • Django 提供了 admin.ModelAdmin 类
  • 通过定义 ModelAdmin 的子类,来定义模型在 Admin 界面的显示方式

bookApp/admin.py :

from django.contrib import admin
from bookApp.models import Book, Hero


# Register your models here.
# 内嵌关联注册类
class HeroInline(admin.StackedInline):
    model = Hero
    extra = 3


class BookAdmin(admin.ModelAdmin):
    # 列表页展示的设置
    # 显示字段,可以点击列头进行排序
    list_display = ['id', 'name', 'pub_date']
    # 过滤字段,过滤框会出现在右侧
    list_filter = ['pub_date']
    # 搜索字段,搜索框会出现在上侧
    search_fields = ['name']
    # 链接,书名链接到编辑
    list_display_links = ['name']
    # 分页,分页框会出现在下侧
    list_per_page = 2
    # 关联对象,与人物关联到一起
    inlines = [HeroInline]


class HeroAdmin(admin.ModelAdmin):
    # 列表页展示的设置
    # 显示字段,可以点击列头进行排序
    list_display = ['id', 'name', 'gender']
    # 过滤字段,过滤框会出现在右侧
    list_filter = ['gender']
    # 搜索字段,搜索框会出现在上侧
    search_fields = ['name', 'content']
    # 链接,书名链接到编辑
    list_display_links = ['name']
    # 分页,分页框会出现在下侧
    list_per_page = 5
    # 增加和编辑页的设置
    fieldsets = [('必填信息', {'fields': ['name', 'book_id']}),
                 ('选填信息', {'fields': ['gender', 'content']}),
                 ]

# 关联注册
admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)

列表页属性

  • list_display:显示字段,可以点击列头进行排序
    list_display = ['id', 'name', 'gender']
  • list_filter:过滤字段,过滤框会出现在右侧
    list_filter = ['gender']
  • search_fields:搜索字段,搜索框会出现在上侧
    search_fields = ['name', 'content']
  • list_per_page:分页,分页框会出现在下侧
    list_per_page = 2

效果展示

图书管理界面

人物管理界面

添加、修改页属性

  • fields:属性的先后顺序
fields = ['pub_date', 'title']
  • fieldsets :属性分组, 注意: fields和fieldsets 只能设置一个.
    fieldsets = [('必填信息', {'fields': ['name', 'book_id']}),
                 ('选填信息', {'fields': ['gender', 'content']}),
                 ]

新建人物界面:

关联对象

对于 Hero 模型类,有两种注册方式

  • 方式一:与 Book 模型类相同
  • 方式二:关联注册

admin.StackedInline : 内嵌关联注册类

admin.TabularInline : 表格 关联注册类

bookApp/admin.py:

# bookApp/admin.py
# 内嵌关联注册类
class HeroInline(admin.StackedInline):
    model = Hero
    extra = 3

class BookAdmin(admin.ModelAdmin):
    # .......此处省略部分重复代码
    # 关联对象,与人物关联到一起
    inlines = [HeroInline]


 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值