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, это может исправить ситуацию.

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