[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)
- 1.介绍
- 2.工程搭建
- 2.1.环境配置
- 2.2.创建工程
- 2.3.创建子应用
- 2.3.1.pycharm打开项目
- 2.4.创建视图
- 3.基本配置
- 3.1.settings基本配置项
- 3.2.路由配置
- 4.请求响应
- 4.1.request
- 4.2.response
- 4.3.cookie
- 4.4.session
- 5.类视图中间件
- 5.1.类视图
- 5.2中间件
- 6.数据库
- 6.1.数据库配置
- 6.2定义模型类
- 6.3数据库迁移
- 6.4数据库操作
- 6.5查询集
- 6.6模型管理器
- 7.模板表单
- 7.1使用模板
- 7.2模板标签
- 7.3表单
- 8.后台管理
- 8.1Admin
- 8.2自定义模型类样式
- 8.3列表页