Django appuser выдает ошибку дублирования ключа при создании нового суперпользователя
я получаю эту ошибку при создании нового суперпользователя
Вот ошибка:
django.db.utils.IntegrityError: duplicate key value violates unique constraint "user_auth_appuser_phone_key"
DETAIL: Key (phone)=() already exists.
Я знаю, что он проверяет уникальный номер телефона, а также учитывает пустое значение телефона и поэтому выдает эту ошибку.
Мой вопрос в том, как решить эту проблему
Models.py:
class AppUser(AbstractUser):
user_type = models.PositiveSmallIntegerField(default=1)
class Gender(models.IntegerChoices):
Male = 1, 'MALE'
Female = 2, 'FEMALE'
Other = 3, 'OTHER'
email = models.EmailField(null=True, blank=True)
phone = models.CharField(max_length=15, unique=True)
gender = models.PositiveSmallIntegerField(choices=Gender.choices, null=True, blank=True)
dob = models.DateField(null=True, blank=True)
doa = models.DateField(null=True, blank=True)
@property
def info(self):
from user_auth.serializers import UserSerializer
return UserSerializer(self).data
@property
def token(self):
return RefreshToken.for_user(self)
поскольку у меня недостаточно репутации, чтобы комментировать, я размещаю свои мысли в качестве ответа.
Как видно здесь Django unique nullable CharField
если вы хотите, чтобы поле телефона было уникальным и пустым, вы можете использовать phone = models.CharField(max_length=15, unique=True, null=True), так что когда оно не предоставлено, результат будет равен null вместо '' (пустая строка).
Поскольку null != null, это может исправить ситуацию.