标签:
Django admin的个性化定制
首先我们看下,前面章节中定义的models在admin后台管理界面的样子:
然后我们看下老男孩教育点名平台的admin管理表的后台界面样子:
admin管理后台常用的就是上面操作的这几种吧,我们来看下如何实现?
首先我们知道,使用admin后台管理表,需要将表注册到admins.py文件中:
from django.contrib import admin
# Register your models here.
from app01 import models
admin.site.register(models.Author) # 注册进来
admin.site.register(models.Book) # 注册进来
admin.site.register(models.Publisher)
这样就简单实现了图一中的管理界面.
配置成图2的界面其实也很简单,在admins.py配置文件两步实现:
1.创建一个管理表单的admin类
2.将这个admin类在注册表的时候关联起来.
class BookAdmin(admin.ModelAdmin):
list_display = (‘title‘,‘publisher‘,‘publication_date‘) #指定显示的字段
admin.site.register(models.Author)
admin.site.register(models.Book,BookAdmin) # 注册的时候,把定义的BookAdmin类作为参数传入进来
admin.site.register(models.Publisher)
保存后,访问http://127.0.0.1:8000/admin/app01/book/
结果如下:
这里我们有一点关于显示Book表中定义的关于manytomany关系表的显示.
Django admin后台管理是不支持显示这种many_to_many关系的,如果你配置了,
class BookAdmin(admin.ModelAdmin):
list_display = (‘title‘,‘authors‘,‘publisher‘,‘publication_date‘) #指定显示的字段
访问时会报如下错误:
<class ‘app01.admin.BookAdmin‘>: (admin.E109) The value of ‘list_display[1]‘ must not be a ManyToManyField.
为什么呢?
因为一行显示不了多个作者.并且这样显示,效率非常底,因为它要另外一张表一个一个查找出来.多一次查询.
了解了怎么实现个性化定制admin的方法.下面我们定义其他想图2中的配置.
from django.contrib import admin
# Register your models here.
from app01 import models
class BookAdmin(admin.ModelAdmin):
list_display = (‘id‘,‘title‘,‘publisher‘,‘publication_date‘) #指定显示的字段
search_fields = (‘title‘,‘publisher__name‘) #添加搜索字段
# 这里我们定义了两个可以提供搜寻的字段 Book.title 和一个外键表.name
# 我们知道外键关联的是另外一个orm类,如果你想在本张表中通过搜索关联表字段来做帅选,是不是要搜外间表.Django admin里使用publisher__字段名 的方式实现了让你在当前表搜外键表的功能
list_filter = (‘publisher‘,‘publication_date‘) # 添加按照字段过滤的关键字list_filter
# 这里外键就可以直接写字段了.
list_editable = (‘title‘,‘publisher‘,‘publication_date‘) #让后台界面上可以直接修改字段值的关键字定义list_editable
#这里注意Django admin后台默认显示的第一个表字段是不能修改的.
list_per_page = 10 # 让每页显示几条记录的设置
filter_horizontal = (‘authors‘,) #只针对多对多
raw_id_fields = (‘publisher‘,) # 只针对外键的
admin.site.register(models.Author)
admin.site.register(models.Book,BookAdmin) # 注册的时候,把定义的BookAdmin类作为参数传入进来
admin.site.register(models.Publisher)
首页里显示的东西差不多就这些定制.
访问页面看下效果:
接下来就是点到条目内的个性化定制
filter_horizontal = (‘authors‘,) #只针对多对多
raw_id_fields = (‘publisher‘,) # 只针对外键的
我们看下效果:
Django的后台管理只适用内容管理,像监控平台这种不能用admin后台管理!!
标签:
原文地址:http://www.cnblogs.com/zhming26/p/5767158.html