Django выдает "django.db.utils.IntegrityError: duplicate key value violates unique constraint" после добавления нового поля

После добавления еще одного поля с параметром unique в мою модель UserProfile я получаю следующую ошибку при отправке формы регистрации, которая требует это поле:

django.db.utils.IntegrityError: дублирующее значение ключа нарушает уникальность ограничение "user_userprofile_pseudonym_key" DETAIL: Ключ (псевдоним)=() уже существует.

Я очистил всю базу данных, удалил все файлы миграций и мигрировал все полностью заново и с чистого листа, но это не помогло.

Все работало хорошо до добавления pseudonym в качестве дополнительного поля в модель.

Это тоже не помогло.

# html

<form  hx-post="{% url 'signup' %}"
       hx-swap="outerHTML"
       class="form shadow-2xl min-w-[360px] max-w-[360px] p-4 bg-surface rounded-lg text-white"
>
    {% csrf_token %}

    <!-- form headline -->
    <h1 class="form-headline text-2xl text-surface-dark text-center mb-2">Create a new account</h1>

    {% if form.errors %}
    <div class="error-wrapper mb-2 p-2 bg-error rounded text-white">
        <div class="errors text-center">{{ form.errors.pseudonym }}</div>
        <div class="errors text-center">{{ form.errors.email }}</div>
        <div class="errors text-center">{{ form.errors.password2 }}</div>
    </div>
    {% endif %}
    <div class="username-wrapper field-wrapper mb-2">
        <div class="tag name-tag p-1 text-sm">{{ form.pseudonym.label }}*</div>
        <div class="input text-woys-purple text-surface-dark">{{ form.pseudonym }}</div>
    </div>

    ...

</form>
# forms.py

class SignUpForm(UserCreationForm):

    pseudonym = forms.CharField(required=True, widget=forms.TextInput(attrs={'class': tailwind_class}))
    email = forms.EmailField(required=True, widget=forms.EmailInput(attrs={'class': tailwind_class}))
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput(attrs={'class': tailwind_class}))
    password2 = forms.CharField(label='Confirm Password', widget=forms.PasswordInput(attrs={'class': tailwind_class}))

    class Meta:
        model = get_user_model()
        fields = ('email', 'password1', 'password2')
# models.py

class UserProfile(AbstractBaseUser, PermissionsMixin):

    # Unique identifier
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

    # Email and name + pseudonym of the user
    email = models.EmailField(max_length=255, unique=True)
    name = models.CharField(max_length=255)
    pseudonym = models.CharField(max_length=15, unique=True, validators=[RegexValidator(regex='^.{4}$', message='Length has to be min. 4', code='nomatch')])

    # Privilege and security booleans
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
    email_confirmed = models.BooleanField(default=False)

    objects = UserProfileManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    def email_user(self, subject, message, from_email=None, **kwargs):
        """Send mail to user - Copied from original class"""
        send_mail(subject, message, from_email, [self.email], **kwargs)

    def __str__(self):
        return self.email

Я использую PostgreSQL.

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