Django 学习笔记-11 自定义后台

1. 自定义后台表单 | ModelAdmin.fieldsets & ModelAdmin.fields

如果一个模型的字段比较多,可以通过自定义后台表单对字段进行分组:

class PostAdmin(admin.ModelAdmin):
    fieldsets = [
        (None, {'fields': ['title']}),
        ('Post information group 1', {'fields': ['slug', 'intro', 'content']}),
        ('Post information group 2', {'fields': ['category']}),
    ]


admin.site.register(Post, PostAdmin)

如果不需要分组,也可以使用 fields 来改变字段的默认顺序。

fields = ('title', 'slug', 'intro', 'content', 'category',)

如果要在同一行显示多个字段,将这些字段包在自己的元组中,比如要将 titleslug 显示在同一行,可以这样写:

fields = (('title', 'slug') 'intro', 'content', 'category',)

2. 自定义后台列表

2.1 自定义列表显示的字段 | ModelAdmin.list_display

默认情况下,在模型中定义了 __str__() 方法后,Django 的后台页面只能显示这个方法返回的值,看不到模型的其他内容。

这时可以使用 list_display 来设置列表页中要显示模型的哪些字段:

list_display = ('slug', 'intro', 'content', 'category',)

点击列表表头的这些字段都可以对列表进行排序。

2.2 给列表添加一个过滤器 | ModelAdmin.list_filter

list_filter = ['category']

这样就可以看到在列表页多了一个侧边栏:FILTER,可以通过这个过滤器对 post 按照 category 进行筛选。

2.3 给列表添加一个搜索框 | ModelAdmin.search_fields

如果有搜索框的话,就可以使用关键字快速查询到某一条数据。

search_fields = ['title']

上述代码表示搜索时匹配的字段为 title, 也就是文章的标题。如果搜索框中输入的是 Python,那么就相当于下面这条 SQL 查询语句:

SELECT * FROM blog_post WHERE title LIKE '%Python%';

只不过这些查询动作都是 Django 帮我们完成的。

2.4 设置每页显示数据条数 | ModelAdmin.list_per_page

是用来控制每个分页的管理变更列表页面显示的数据条数。默认值为 100。

你可能感兴趣的:(Django 学习笔记-11 自定义后台)