ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] 修改列表页样式 ## 添加样式 ### 1. 每页数据条数 `list_per_page` 选项设置每页数据的条数,默认每页100条数据。 例:修改每页显示3条数据 ```python @admin.register(Book) class BookAdmin(admin.ModelAdmin): list_per_page = 3 ``` 显示效果: ![](https://box.kancloud.cn/aa852e3fe7054be144e64cb34c1e8403_604x179.png) ### 2. 操作选项的位置 `actions_on_top` 设置操作选项是否在顶部显示,默认为 `True` ``` actions_on_top = True ``` `actions_on_bottom` 设置操作选项是否在顶部显示,默认为 `False` ``` actions_on_top = False ``` 例:修改操作选项到下边 ```python @admin.register(Book) class BookAdmin(admin.ModelAdmin): ... actions_on_top = False actions_on_bottom = True ``` 显示效果: ![](https://box.kancloud.cn/80dfa2ec9383bc5a0bd33ea840f68907_587x278.png) ### 3. 列表中的列显示 `list_display` 选项设置显示的列 格式如下 ``` list_display = [列1, 列2] ``` 例:显示书籍的id,标题,发布日期 ```python @admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ['id', 'b_title', 'b_pub_date'] ``` 显示效果: ![](https://box.kancloud.cn/ceb48ed0cb5e9ed85ea13a785525dce2_1053x242.png) ### 4. 将方法作为列 列不仅可以是字段,也可以是方法,要求方法必须有返回值。 例:使用方法列在后台显示阅读次数 1. 在 `Book` 模型类中添加代码 ```python class Book(models.Model): ... def read(self): return '%s 次' % self.b_read read.short_description = "阅读次数" read.admin_order_field = 'b_read' ``` - `short_description` 属性设置该方法在admin站点中显示的名字,类似字段的 `verbose_name` 属性。 - `admin_order_field` 设置方法列可排序,格式如下 ``` 方法名.admin_order_field = '字段名' ``` 2. 添加显示列 ```python @admin.register(Book) class BookAdmin(admin.ModelAdmin): list_display = ['id', 'b_title', 'b_pub_date', 'read'] ``` 显示效果: ![](https://box.kancloud.cn/e4354ac5395cffa27ad454ab5106c06c_1446x164.png) ### 5 访问关联对象 可以使用方法获得被关联对象数据,并显示。 例:在角色页面显示关联图书阅读次数 1. 修改 `Role` 模型类 ```python def read(self): return '%s 次' % self.r_book.b_read read.short_description = "阅读次数" ``` 2. 添加显示列 ```python @admin.register(Role) class RoleAdmin(admin.ModelAdmin): list_display = ['id', 'r_name', 'r_book', 'read'] ``` 显示效果: ![](https://box.kancloud.cn/13c36d401a9bd236eeebe29e43793336_1543x356.png) ### 6. 过滤器 `list_filter` 属性用于在右侧显示过滤器,会把有重复值的数据过滤出来,方便快速选择。 语法格式: ``` list_filter=[字段1, 字段2] ``` 例:使用书名和性别过滤角色 ```python @admin.register(Role) class RoleAdmin(admin.ModelAdmin): list_filter = ['r_book', 'r_gender'] ``` 显示效果: ![](https://box.kancloud.cn/e547def4fbdcd460a332927b18e401b8_276x381.png) ### 7. 搜索框 显示搜索框,用于对指定的字段进行搜索,支持模糊查询。 语法如下: ``` search_fields=[] ``` 例:使用角色名字搜索 ```python @admin.register(Role) class RoleAdmin(admin.ModelAdmin): search_fields = ['r_name'] ``` ![](https://box.kancloud.cn/92f429173b910d3b16f1d0fd9f997932_1351x291.png)