下面主要与管理站点的定制方式有关。对此,可编辑某某应用程序(这里本人以blog为例)的admin.py 文件,并对其予以修改,如下所示:
from django.contrib import admin
from .models impot Post
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish', 'status')
这里,我们将通知 Django 管理站点,当前模型通过继承自ModelAdmin 的自定义类在管理站点中注册,在该类中,可包含管理站点中与模型显示方式及其交互方式相关的信息。相应的,list_display 属性可设置希望在管理对象列表页面中显示的模型字段;@admin.register() 装饰器执行的函数与我们已经替换的 admin.site.register()函数相同,并注册它所修饰的ModelAdmin类。
下面利用更多选项定制管理模型,对应代码如下所示:
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('title', 'slug', 'author', 'publish', 'status')
list_filter = ('status', 'created', 'publish', 'author') # 右侧栏
search_fields = ('title', 'body') # 搜索栏
prepopulated_fields = {
'slug': ('title',)} # 根据输入的title字段预填充slug字段
raw_id_fields = ('author',) # author字段利用搜索微键予以展示
date_hierarchy = 'publish' # 导航链接
ordering = ('status', 'publish') # 按照 status 和 publish 排序
返回至浏览器并重新加载帖子列表页面,对应结果如下:
不难发现,在帖子列表页面中显示的字段实际上是 list_display 属性中指定的字段。列表页面包含了右侧栏,并通过 list_filter 属性中包含的字段对结果进行过滤。
综上所述,仅需几行代码,即可定制模型在管理站点上的显示方式。另外,还存在多种方式可定制、扩展Django管理站点。
通过上面几点,希望给各位一点启发,感谢各位的支持。