Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django.db.utils.IntegrityError:唯一约束失败:身份验证\u user.email_Django_Django Rest Framework_Django Serializer_Django Custom User_Django Custom Manager - Fatal编程技术网

django.db.utils.IntegrityError:唯一约束失败:身份验证\u user.email

django.db.utils.IntegrityError:唯一约束失败:身份验证\u user.email,django,django-rest-framework,django-serializer,django-custom-user,django-custom-manager,Django,Django Rest Framework,Django Serializer,Django Custom User,Django Custom Manager,我正试图通过API创建用户,但我被上面的错误所震惊 下面是用户及其管理员的代码。这里,我正在创建自定义用户模型 class UserManager(BaseUserManager): def create_user(self,username,email, password=None): if username is None: raise TypeError('Users should have a Username') if

我正试图通过API创建用户,但我被上面的错误所震惊

下面是用户及其管理员的代码。这里,我正在创建自定义用户模型

class UserManager(BaseUserManager):

    def create_user(self,username,email, password=None):

        if username is None:
            raise TypeError('Users should have a Username')
        if email is None:
            raise TypeError('Users should have a Email')

        user = self.model(username=username,email=self.normalize_email)
        user.set_password(password)
        user.save()
        return user


    def create_superuser(self,username,email, password=None):

        if password is None:
            raise TypeError('Password should not be none')
        
        user = self.create_user(username, email, password)
        user.save()
        return user

class User(AbstractBaseUser,PermissionsMixin):
    username = models.CharField(max_length=255, unique=True, db_index=True)
    email = models.EmailField(max_length=255,unique=True,db_index=True)

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

    objects= UserManager()

    def __str__(self):
        return self.email
下面是serializers.py文件

class RegisterSerializers(serializers.ModelSerializer):
    password = serializers.CharField(max_length=68, min_length=6, write_only=True)

    class Meta:
        model = User
        fields = ['email','username','password']

    def validate(self, attrs):
        email = attrs.get('email','')
        username = attrs.get('username','')

        if not username.isalnum():
            raise serializers.ValidationError('The username should only contain alphanumeric character')
        return attrs
        
    def create(self, validated_data):
        return User.objects.create_user(**validated_data)
下面是views.py中的POST请求

class RegisterView(generics.GenericAPIView):

    serializer_class = RegisterSerializers

    def post(self, request):
        user = request.data
        serializer = self.serializer_class(data=user)
        serializer.is_valid(raise_exception=True)
        serializer.save()

        user_data = serializer.data

        return Response(user_data,status=status.HTTP_201_CREATED)

我是drf的新手。请帮助我,谢谢。

这意味着你用相同的
电子邮件创建了第二个
用户
,并且由于
电子邮件
唯一的=真的
,你不能用相同的电子邮件在数据库中创建两个
用户。我如何用相同的电子邮件创建两个用户,解释?数据库中可能已经有一个
用户
使用给定的
电子邮件
,您现在可以注册第二个用户。我尝试使用不同的电子邮件和用户名,但出现了相同的错误。愚蠢的错误,我忘了在normalize_email中写入
电子邮件
,即
email=self。normalize_email(email)
。但是谢谢你的帮助,伙计。