Django模型管理类的注册
模型管理的注册方式一般有2个:
1. 使用admin.site.register
admin.site.register(model, MyModelAdmin)
2. 装饰器@admin.register
注意:官方目前推荐装饰器注册这种方式。
@admin.register(model) class MyModelAdmin(admin.ModelAdmin): pass
说明:
使用装饰器注册模型管理类的一个优势是可以将其定义为一个独立的函数,使得这个函数可以在其他模块或应用中被引用并重用。
例如,在一个项目中,我们可能需要管理多个模型,而这些模型的管理功能可能会有一些相似的地方,比如都需要定义一些列表显示的字段、过滤器、搜索等等。如果我们使用装饰器来定义这些模型的管理类,那么我们可以将这些公共的部分抽象成一个基类,然后让每个模型的管理类都继承这个基类,这样就可以实现代码的重用。
from django.contrib import admin from .models import Product, Order class BaseAdmin(admin.ModelAdmin): list_display = ('id', 'created_at', 'updated_at') list_filter = ('created_at', 'updated_at') search_fields = ('id',) @admin.register(Product) class ProductAdmin(BaseAdmin): list_display = BaseAdmin.list_display + ('name', 'price') search_fields = BaseAdmin.search_fields + ('name',) @admin.register(Order) class OrderAdmin(BaseAdmin): list_display = BaseAdmin.list_display + ('user', 'total') search_fields = BaseAdmin.search_fields + ('user',)