Django - 两种扩展用户模型的方法不能一起工作?

问题描述 投票:0回答:1

我试图让我的 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'
    
django django-users
1个回答
0
投票
您应该使用其中一种用户模型,而不是同时使用“User”或“CustomUser”。

所以,在你的模型中:

class Account(models.Model): user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
在您的管理员中执行相同操作。

© www.soinside.com 2019 - 2024. All rights reserved.