自定义Django Admin中模型的显示分组与位置问题求助
解决方案
方法一:修改模型元数据(推荐,无Admin定制成本)
直接在模型B的定义中指定归属的app标签,同时保留原有数据库表名避免数据丢失:
修改b/models.py:
class B(models.Model): # 你的模型字段... class Meta: app_label = 'a' # 指定归属到app a分组 db_table = 'b_b' # 保持原有数据库表名,无需迁移数据
修改后,无论在哪个app的admin文件中注册B,Django Admin都会将其归类到app a分组下。注意删除b/admin.py中对B的注册代码,避免重复注册报错。
方法二:通过AppConfig动态调整(无需修改模型代码)
如果不想改动模型文件,可在app a的配置类中动态修改模型B的归属标签:
修改a/apps.py:
from django.apps import AppConfig from b.models import B class AConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'a' def ready(self): # 动态修改模型B的app标签为a B._meta.app_label = 'a'
在项目settings.py中确保app a使用该配置类:
INSTALLED_APPS = [ # ... 'a.apps.AConfig', # 替换原来的'a' 'b', # ... ]
最后删除b/admin.py中对B的注册代码,在a/admin.py中正常注册即可:
from django.contrib import admin from b.models import B admin.site.register(B)
内容的提问来源于stack exchange,提问作者mohamadhosseintahan
相关产品推荐
相关产品推荐

