Django Admin样式定制
一、将model注册到后台
以  中的model为例。在我们的APP目录下修改admin.py文件:  
| 1 | from django.contrib import admin | 
然后在我们的后台可以看到:
然后我们点开Students看到:
这个样子我们什么都看不到,怎么才能想系统默认的那样看到各个字段的情况呢(自己插入点任意数据)?
| 1 | INSERT student VALUES(1,"刘备","******","liubei@163.com","yes","daye"), | 
二、自定义数据展示样式
在我们的APP目录下修改admin.py文件:
| 1 | from django.contrib import admin | 
通过定义list_display来定制我们展示的内容:
可以看到我们指定的字段已经全部显示。
三、添加搜索框
同样的在admin.py文件中:
| 1 | from django.contrib import admin | 
通过search_fields属性来指定搜索的字段条件,界面如下:
比如我们输入role字段的值打野,然后搜索: 
  
四、添加过滤器
同样的在admin.py文件中:
| 1 | from django.contrib import admin | 
通过list_filter属性来添加过滤器,也可以添加多个字段来添加多个过滤器:
可以发现右侧增加了过滤器,且点击了射手显示的数据。
五、设置每页显示的条数
| 1 | from django.contrib import admin | 
通过list_per_page设置每页显示4条数据(清空我们的所有条件和过滤器): 
  
六、编辑每行字段
| 1 | from django.contrib import admin | 
通过list_editable属性使得邮箱可编辑,可以直接保存:
我们通过修改邮箱,然后点击保存,会发现在顶部提示修改是否成功。
七、排序
| 1 | from django.contrib import admin | 
我们发现现在默认是倒序排列,可以通过ordering属性来实现排序: 
  
八、给role字段添加选项
在数据库表中role字段很明显是固定的几个值(打野、法师、射手、辅助),我们使用选择固定在来修改,在models.py中修改:  
| 1 | from django.db import models | 
使用role_choices来列举出所有值,然后修改role字段,也就是增加choices=role_choices和默认值,默认字段一定要加,不然同步数据库会出错,同步数据库:
| 1 | Sing-2:hello Sing$ python manage.py makemigrations # 还是这两个命令 | 
然后运行服务器查看效果:
九、Admin中添加Actions
首先在models.py添加一个字段have,代表是否拥有此英雄,值为yes和no,如果拥有,则显示拥有切绿色背景白色字,否则显示未有切红色背景黑色字:  
| 1 | # 引入html | 
然后在admin.py中添加选择的方法:  
| 1 | def make_have(modelAdmin,request,queryset): #queryset是选中的对象的集合 | 
很好理解,执行的时候将修改have字段的值,然后在Student中注册actions:  
| 1 | class Student(admin.ModelAdmin): | 
注意在list_display中添加have_color字段,对应model中的方法名,看效果:
十、以指定的名字显示列名

目前的显示方式是默认的,我们可以在models.py中通过verbose_name属性来指定显示名:  
| 1 | class Student(models.Model): | 
而我们显示的have_color则需要通过short_description来指定别名:
| 1 | have_color.short_description='have' | 
而在我们的网页端选择Action的时候显示的也是英文,也可以用这种方法指定别名,我们的最终效果:
最终的models.py和admin.py代码:
models.py
| 1 | from django.db import models | 
admin.py
| 1 | from django.contrib import admin |