这是默认的用户模型,没有任何自定义,也没有以任何方式对Auth进行修改。我正在使用Django 2.1。
软件仓库/Admin.py
import depot.models as models
from django.contrib import admin
from django.db.models.base import ModelBase
from django.contrib.auth.models import User
admin.site.site_header = "DSG IT Database"
for model_name in dir(models):
model = getattr(models, model_name)
if isinstance(model, ModelBase):
if model in admin.site._registry:
admin.site.unregister(model)
else:
admin.site.register(model)
商店/Admin.py
import stores.models as models
from django.contrib import admin
from django.db.models.base import ModelBase
from django.contrib.auth.models import User
admin.site.site_header = "DSG IT Database"
for model_name in dir(models):
model = getattr(models, model_name)
if isinstance(model, ModelBase):
if model in admin.site._registry:
admin.site.unregister(model)
else:
admin.site.register(model)
我确实知道这些是种的冗余,但这不是问题,因为当这也是单个应用程序项目时,这也是一个问题。
正在发生的事情是,管理站点中完全没有Users
。我可以用admin.site.register(User)
重新注册它,但是后来(似乎是随机的)以后,我会得到一个错误,提示User
已经被注册。然后,我unregister
模型,它将工作一段时间,然后在某个时候用户将再次消失,并且使其再次起作用的唯一方法是再次注册。
我找不到在哪里调试它。我假设正在注册模型,但仅在不确定的某些条件下才注册。有人遇到过与此类似的问题吗?
请随时要求我提供您认为有助于诊断的任何信息!
答案 0 :(得分:1)
如果stores.models
导入了User
,它将列在dir(models)
中,并且由于ModelBase
是所有Django模型的Django元类:
isinstance(User, ModelBase) # Is True
因此,User
模型不存在,因为您正在取消注册。
您可以使用:
from django.apps import apps
stores_app_config = apps.get_app_config('stores')
for model in stores_app_config.get_models():
# process models from stores app here.
建议阅读:Python metaclasses.