Django制定模型的显示方式

下面主要与管理站点的定制方式有关。对此,可编辑某某应用程序(这里本人以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管理站点。

通过上面几点,希望给各位一点启发,感谢各位的支持。

猜你喜欢

转载自blog.csdn.net/Erudite_x/article/details/112533600
今日推荐