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 |