Почему требуется имя пользователя, когда я задаю электронную почту в качестве имени пользователя

Я пытаюсь создать Django backend для своего приложения. Для аутентификации я использую django authentication, где мне нужно было создать CustomUser модель для моего конкретного случая использования. После попытки вставить нового пользователя я сталкиваюсь с этой ошибкой: django.db.utils.IntegrityError: duplicate key value violates unique constraint "users_customuser_username_key" DETAIL: Key (username)=() already exists.

Я добавлю полный трассировочный бэкграунд ниже.

Я также включил эту строку в settings.py AUTH_USER_MODEL = "users.CustomUser"

Вот моя функция, которую я использую для создания нового пользователя:

from .models import CustomUser
from .dto import UserRegistrationDto, JWTDto

def create_user_in_database(data: UserRegistrationDto) -> JWTDto:

        user = CustomUser.objects.create(first_name=data.first_name, last_name=data.last_name,birthdate=data.birthdate, email=data.email)
        user.save()
        user.set_password(data.password)
        return user

Определение моей модели CustomUser:

from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    birthdate = models.DateField(null=True, blank=True)
    email = models.EmailField(unique=True)
    key = models.PositiveBigIntegerField(default=1,null=False)
    tier = models.IntegerField(default=1,null=False)
    used_capacity = models.FloatField(default=0.0,null=False)

    USERNAME_FIELD = "email"
    REQUIRED_FIELDS = ["birthdate","first_name","last_name"]

Мой класс DTO:

class UserRegistrationDto(ModelSchema):
    class Meta:
        model = CustomUser
        fields = ["first_name","last_name","birthdate","email","password"]

Полное возвращение к трассировке:

Я не уверен, где может быть проблема, потому что я определил CustomUser именно так, как говорится в документации.

Вернуться на верх