Не могу решить эту ошибку: UNIQUE constraint failed: auth_user.username

Я искал решение вдоль и поперек, но, похоже, не нашел его. У меня есть форма для регистрации пользователей на платформе eLearning, функция входа работает нормально, но при регистрации возвращается сообщение об ошибке. Вот мой forms.py файл:

from django import forms
from .models import Contact as con, Subscription as subs
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm


# registration form
class register(UserCreationForm):
    # create User form
    FirstName = forms.CharField(max_length=30, required=True)
    LastName = forms.CharField(max_length=30, required=True)
    UserName = forms.CharField(max_length=30, required=True)
    Email = forms.CharField(max_length=255, required=True)

    class Meta:
        model = User
        fields = [
            "FirstName",
            "LastName",
            "UserName",
            "Email",
            "password1",
            "password2",
        ]

и это мой views.py файл:

def logout_user(req):
    # log the user out
    logout(req)
    return redirect("Home")


def dash(req):

    if req.method == "POST":
        # if the user is signing up
        if "signup" in req.POST:
            form = register(req.POST)
            print(form)

            if form.is_valid():
                # save
                form.save()
                
                # get the username and password
                username = form.cleaned_data.get("UserName")
                password = form.cleaned_data.get("password1")
                # authenticate and  log the user in
                user = authenticate(username=username, password=password)
                login(req, user)

                # drop a success message
                messages.success(req, "You have successfully signed up!")
                # render back the page
                return render(req, "dashboard.html")

            else:
                fname = req.POST["FirstName"]
                lname = req.POST["FirstName"]
                email = req.POST["Email"]
                # get the errors
                errors = form.errors.as_data()

                err_list = []

                for err in errors:
                    err_list.append(f"{err}: {errors[err][0].message}")

                print(err_list)
                # pass it to the page
                return render(
                    req,
                    "login.html",
                    {
                        "err": err_list,
                        "fname": fname,
                        "lname": lname,
                        "email": email,
                    },
                )

Я проверил, не создаю ли я одного и того же пользователя дважды, а также убедился, что новый пользователь не существует, затем я пошел дальше, чтобы отладить свой код, я распечатал форму в терминале, и все подтвердилось. Вот форма, распечатанная в терминале:

<div>
    <label for="id_FirstName">Firstname:</label>

<div class="helptext" id="id_FirstName_helptext">Enter first name</div>

<input type="text" name="FirstName" value="Abdulqadir" maxlength="30" required aria-describedby="id_FirstName_helptext" id="id_FirstName">

</div>

  <div>
    <label for="id_LastName">Lastname:</label>

<div class="helptext" id="id_LastName_helptext">Enter your last name</div>

<input type="text" name="LastName" value="Mahood" maxlength="30" required aria-describedby="id_LastName_helptext" id="id_LastName">

</div>

  <div>
    <label for="id_UserName">Username:</label>

<div class="helptext" id="id_UserName_helptext">Pick a User name</div>

<input type="text" name="UserName" value="abdulqadir" maxlength="30" required aria-describedby="id_UserName_helptext" id="id_UserName">

</div>

  <div>
    <label for="id_Email">Email:</label>



<input type="text" name="Email" value="abdulqadirbimuslim@gmail.com" maxlength="255" required 
id="id_Email">

</div>

  <div>
    <label for="id_password1">Password:</label>

<div class="helptext" id="id_password1_helptext"><ul><li>Your password can’t be too similar to your other personal information.</li><li>Your password must contain at least 8 characters.</li><li>Your password can’t be a commonly used password.</li><li>Your password can’t be entirely numeric.</li></ul></div>

<input type="password" name="password1" autocomplete="new-password" required aria-describedby="id_password1_helptext" id="id_password1">

</div>

  <div>
    <label for="id_password2">Password confirmation:</label>

<div class="helptext" id="id_password2_helptext">Enter the same password as before, for verification.</div>

<input type="password" name="password2" autocomplete="new-password" required aria-describedby="id_password2_helptext" id="id_password2">

Я попробовал закомментировать form.save() и тогда я понял ошибку, всякий раз, когда я закомментировал этот код, функция регистрации работает, и я получаю вход в панель, но новый пользователь не сохраняется на сайте администратора. Когда я проверил сайт администратора, я увидел, что сохраняются пустые данные с сообщением "Вы успешно зарегистрировались!", и когда я попытался войти в систему, конечно, это не сработало. Может ли кто-нибудь помочь мне с этой проблемой :(

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