Почему требуется имя пользователя, когда я задаю электронную почту в качестве имени пользователя
Я пытаюсь создать 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 именно так, как говорится в документации.