Django CustomUser Model - адрес электронной почты уже занят

Я пытался сделать CustomUser Manager в Django. Когда я пытаюсь войти или зарегистрировать нового пользователя с помощью моей формы, я всегда получаю ошибки, такие как: "Адрес электронной почты уже занят" или "Пароли не совпадают". Я пробовал разные решения здесь, но пока ничего не помогло. Я новичок в кодинге, поэтому, пожалуйста, не судите меня :)

models.py

from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from django.contrib.auth.models import (
    BaseUserManager, AbstractBaseUser, PermissionsMixin
)


class MyUserManager(BaseUserManager):
    def create_user(self, email, password=None):
        
        if not email:
            raise ValueError('Users must have an email address')

        email = self.normalize_email(email)
        user = self.model(email=email)

        user.set_password(password)
        user.save()
        return user

    def create_superuser(self, email, password=None):
        """
        Creates and saves a superuser with the given email, date of
        birth and password.
        """
        user = self.create_user(
            email,
            password=password,
        )
        user.is_staff = True
        user.save()
        return user

    
class NewUser(AbstractBaseUser, PermissionsMixin):

    email = models.EmailField(_('Email Adresse'), unique=True)
    user_name = models.CharField(max_length=20, unique=True)
    first_name = models.CharField(max_length=30, blank=False)
    last_name = models.CharField(max_length=50, blank=False)
    birthdate = models.DateField(null=True, blank=False)
    start_date = models.DateTimeField(default=timezone.now)
    is_staff = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
    sex = models.CharField(max_length=1, default='K', choices=Sex.SEX_CHOICES,)
    vacc = models.CharField(max_length=1, default='K', choices=Vacc.VACC_CHOICES,)
    
    objects = MyUserManager()

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = []

    def __str__(self):
        return self.email
    


Я всегда получаю ошибку: "Адрес электронной почты уже занят". Есть идеи, как это исправить?

views.py

from django.core.checks import messages
from django.shortcuts import render
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required
from django.shortcuts import HttpResponse, HttpResponseRedirect, render
from django.db import IntegrityError
from django.urls import reverse

from users.models import NewUser

# Create your views here.
def index(request):

    # Authenticated users view their inbox
    if request.user.is_authenticated:
        return render(request, "events/index.html")

    # Everyone else is prompted to sign in
    else:
        return HttpResponseRedirect(reverse("login"))

def login_view(request):
    if request.method == "POST":

        # Attempt to sign user in
        email = request.POST["email"]
        password = request.POST["password"]
        user = authenticate(request, username=email, password=password)

        # Check if authentication successful
        if user is not None:
            login(request, user)
            return HttpResponseRedirect(reverse("index"))
        else:
            return render(request, "users/login.html", {
                "message": "Falsche E-Mail Adresse oder Passwort."
            })
    else:
        return render(request, "users/login.html")


def register(request):
    if request.method == "POST":
        email = request.POST["email"]

        # Ensure password matches confirmation
        password = request.POST["password"]
        confirmation = request.POST["confirmation"]
        if password != confirmation:
            return render(request, "users/register.html", {
                "message": "Dein Passwort muss übereinstimmen."
            })

        # Attempt to create new user
        try:
            user = NewUser.objects.create_user(email)
            user.save()
        except IntegrityError as e:
            print(e)
            return render(request, "users/register.html", {
                "message": "Email address already taken."
            })
        login(request, user)
        return HttpResponseRedirect(reverse("activate"))
    else:
        return render(request, "users/register.html")

Вам необходимо написать новую форму NewUserForm. В настоящее время вы используете стандартную форму модели, которая имеет валидацию создания пользователя.

class NewUserForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")

    def save(self, commit=True):
        user = super(NewUserForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        if commit:
            user.save()
        return user

def register_request(request):
    if request.method == "POST":
        form = NewUserForm(request.POST)
        if form.is_valid():
            user = form.save()
            login(request, user)
            messages.success(request, "Registration successful." )
            return redirect("main:homepage")
        messages.error(request, "Unsuccessful registration. Invalid information.")
    form = NewUserForm()
    return render (request=request, template_name="main/register.html", context={"register_form":form})

Но может быть проблема с вашим шаблоном входа, который отправляет данные в конечную точку регистрации.

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