Python 向管理员身份验证注册自定义用户模型
在Django项目中,我有一个自定义用户模型,它添加了一个额外字段:Python 向管理员身份验证注册自定义用户模型,python,django,django-admin,django-authentication,Python,Django,Django Admin,Django Authentication,在Django项目中,我有一个自定义用户模型,它添加了一个额外字段: class User(AbstractUser): company = models.ForeignKey(Company, null=True, blank=True) 这个模型是在我的应用程序中定义的,比如说MyApp.models 如何使新的用户模型显示在“身份验证和授权”下,作为原始的django.contrib.auth模型 在admin.py中使用 from django.contrib.auth.ad
class User(AbstractUser):
company = models.ForeignKey(Company, null=True, blank=True)
这个模型是在我的应用程序中定义的,比如说MyApp.models
如何使新的用户
模型显示在“身份验证和授权”下,作为原始的django.contrib.auth
模型
在admin.py中使用
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff')
admin.site.register(User, UserAdmin)
这可以解决您的问题,但在迁移应用程序时可能会导致一些错误。另一个黑客是在你的
AdminSite
中定义get\u app\u list
,我想你正在寻找的是取代django用户模型。要做到这一点,请参阅本文的答案:。我建议采用扩展路线,但这意味着父模型和子模型都必须注册
如果您确实想要一个模型,只需将AUTH\u USER\u model
设置设置为您的模型。这实际上取代了默认模型
在您的settings.py中:
AUTH_USER_MODEL = "appname.UserModelName"
有关更换用户型号的详细信息,请参阅。可能需要尝试以下操作: 管理应用程序中应用程序和模型的自定义订购。您还可以重命名、交叉链接或从应用程序列表中排除模型 如何让新的用户模型显示在“身份验证和 授权“
我在使用Django 3.0时也有同样的顾虑,我就是这样解决的:
class CustomUser(AbstractUser):
class Meta:
db_table = 'auth_user'
app_label = 'auth'
在设置中:
AUTH_USER_MODEL = "auth.CustomUser"
这就是我正在做的,但是a)如果我使用我的
用户
类,它会出现在我的应用程序中;b) 如果我使用Django auth的类,它不会出现在任何地方(这并不奇怪,因为我不是用它来表示用户的类)?默认情况下,超级用户显示在belog Group中。我有一个超级用户,是的。您在哪里可以实现此目标?不,不幸的是,您是否修复了此问题?
AUTH_USER_MODEL = "auth.CustomUser"