Django - 用户不一致地注册到管理员
Django - Users inconsistently registered to Admin
这是默认的用户模型,没有任何定制,也没有以任何方式对 Auth 进行修改。我正在使用 Django 2.1。
Depot/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)
Stores/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
模型,它会工作一段时间,然后在某个时候用户会再次消失,让它再次工作的唯一方法是再次注册。
我找不到调试它的位置。我假设模型正在某个地方注册,但只是在我不确定的某些条件下。有人遇到过类似的问题吗?
请随时让我提供您认为有助于诊断的任何信息!
如果 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.
这是默认的用户模型,没有任何定制,也没有以任何方式对 Auth 进行修改。我正在使用 Django 2.1。
Depot/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)
Stores/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
模型,它会工作一段时间,然后在某个时候用户会再次消失,让它再次工作的唯一方法是再次注册。
我找不到调试它的位置。我假设模型正在某个地方注册,但只是在我不确定的某些条件下。有人遇到过类似的问题吗?
请随时让我提供您认为有助于诊断的任何信息!
如果 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.