场景
实际的开发过程中,往往Model多达几十个,一个个写Admin,再Register,效率低。
思考
能自动注册Model到管理后台
方案
- 在项目配置目录下新建一个文件夹apps,再在文件夹下穿件项目同名APP。
-
重写APP下apps.py文件中AppConfig类的ready方法
from 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最后。