我试图让我的 Django 应用程序在创建帐户时需要唯一的电子邮件地址。当我添加(模型中的注释行)模型中的唯一电子邮件约束时,我曾经添加字段,然后它只是添加另一个电子邮件字段而不是更改原始字段。
因此,在找到扩展 AbstractUser 类的另一个解决方案后,不幸的是,当我尝试进行迁移时,我收到“模型用户未注册”错误。
请告诉我如何获得额外的字段以及独特的电子邮件限制。
这是我如何将额外的字段添加到用户模型中的:
型号
class Account(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
points = models.IntegerField(default=0)
#### email = models.EmailField(("email address"), blank=True, null=True, unique=True)
profession = models.CharField(max_length=30, blank=True, null=True,
choices =[('a', 'a'), ('b', 'b')])
def __str__(self):
return self.user.username
管理员
from django.contrib import admin
from account.models import Account
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin
class AccountInline(admin.StackedInline):
model = Account
can_delete = False
verbose_name_plural = 'Accounts'
class CustomizedUserAdmin (UserAdmin):
inlines = (AccountInline, )
admin.site.unregister(User)
admin.site.register(User, CustomizedUserAdmin)
它一直有效,直到我添加:
型号
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
email = models.EmailField(unique=True)
设置
AUTH_USER_MODEL = 'account.CustomUser'
所以,在你的模型中:
class Account(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
在您的管理员中执行相同操作。