场景
实际的开发过程中,往往Model多达几十个,一个个写Admin,再Register,效率低。
思考
能自动注册Model到管理后台
方案
在项目配置目录下新建一个文件夹apps,再在文件夹下穿件项目同名APP。
重写APP下apps.py文件中AppConfig类的ready方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19from django.apps import apps
class ListAdminMixin:
def __init__(self, model, admin_site):
self.list_display = (field.name for field in model._meta.fields)
super(ListAdminMixin, self).__init__(model, admin_site)
class UnionAdminApp(AppConfig):
name = 'project_name'
def ready(self):
models = apps.get_models()
for model in models:
admin_class = type("AdminClass", (ListAdminMixin, admin.ModelAdmin))
try
admin.site.register(model)
except admin.sites.AlreadyRegistered:
pass将APP注册到Django最后。