django admin后台管理
django提供了比较完善的后台管理数据库的接口,可供开发过程中调用和测试使用。会搜集所有已经注册的模型类,为这些模型类提供数据管理界面,供开发者使用。
-
注册自定义模型类:
若要自己定义的模型类也能在admin后台管理界面中显示和管理,就需要将自己的类注册到后台管理界面中。
注册步骤:-
在应用app中的admin.py中导入注册要管理的模型models类,例如from .models import Book
-
调用admin.site.register(自定义模型类)方法进行注册。
-
举例:
from django.contrib import admin from .models import Book,Author # Register your models here. # 先注册 class BookManager(admin.ModelAdmin): #列表页显示哪些字段的列 list_display = ['id','title','price','market_price'] #超链接,控制list_display中的字段,哪些可以链接到修改页 list_display_links = ['title'] #过滤器 list_filter = ['pub'] #添加搜索框(模糊查询),根据输入的字在这个字段进行模糊查询 search_fields = ['title'] #添加可在列表页编辑的字段(该字段一定要是显示出来的字段,并且不是list_display_links的参数中的字段) list_editable = ['price','market_price'] class AuthorManager(admin.ModelAdmin): list_display = ['id','name','age'] # 再绑定,这里相当于即注册了模型类,又绑定了注册模型管理器和模型类 admin.site.register(Book,BookManager) admin.site.register(Author,AuthorManager)
-
在用户自定义的模型类中可以重写def str(self):方法来调整模板类中数据实例的显示方式。
-
-
模型管理器类:可以自己修改admin的样式,为后台管理界面添加便于操作的新功能。
- 说明:后台管理器类必须继承自django.contrib.admin里的ModelAdmin类。
- 使用方法:
-
在应用app的admin.py中定义模型管理器类 class xxxxManager(admin.ModelAdmin):…
-
绑定注册模型管理器和模型类:
from django.contrib import admin from .models import * admin.site.register(YYYY,XXXXManager) #绑定YYYY模型类与管理器类XXXXManager
from django.contrib import admin from .models import Book,Author # Register your models here. # 先注册 class BookManager(admin.ModelAdmin): #列表页显示哪些字段的列 list_display = ['id','title','price','market_price'] #超链接,控制list_display中的字段,哪些可以链接到修改页 list_display_links = ['title'] #过滤器 list_filter = ['pub'] #添加搜索框(模糊查询),根据输入的字在这个字段进行模糊查询 search_fields = ['title'] #添加可在列表页编辑的字段(该字段一定要是显示出来的字段,并且不是list_display_links的参数中的字段) list_editable = ['price','market_price'] class AuthorManager(admin.ModelAdmin): list_display = ['id','name','age'] # 再绑定,这里相当于即注册了模型类,又绑定了注册模型管理器和模型类 admin.site.register(Book,BookManager) admin.site.register(Author,AuthorManager)
-
-
再谈Meta类:
之前通过这个内部类修改过表的表名,针对模型类,它还有其他的控制,而且是体现在admin后台上的。通过Meta内嵌类定义模型类的属性,例如:class Meta: db_table = '数据表名' #该模型所用的数据表的名称,注意修改完之后应立马更新同步数据库,Python manage.py makemigrations和migrate verbose_name = '单数名' #给模型类的一个易于理解的名称(单数),用于显示在/admin管理界面中(就是控制模型类在admin后台的显示名称) verbose_name_plural = '复数名' #该对象复数形式的名称(复数),用于显示在/admin管理界面中