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后台管理!!
时间: 2024-12-25 08:58:02