Как добавить новые поля в пользовательскую модель пользователя?

Я создал пользовательскую модель пользователя и она отлично работает. Но проблема в том, что я много раз пытался добавить новые поля, такие как first_name, last_name, phone_number, и так далее, но не работает. Выдает ошибку. Какое будет соответствующее решение, как я могу исправить это и добавить новые поля в пользовательскую модель пользователя?

models.py:

class User(AbstractUser):

    email = models.EmailField( max_length=150,unique=True,error_messages={"unique":"The email must be unique."})

    REQUIRES_FIELDS = ["email"]
    objects = CustomeUserManager()

    def __str__(self):
        return str(self.pk) + "." + self.username

form.py:

from django import forms
from .models import User

class UserRegistrations(forms.ModelForm):
    class Meta:
        model = User
        fields = ("username", "email", "password",)


    def clean_username(self):
        username = self.cleaned_data.get('username')
        model = self.Meta.model

        user = model.objects.filter(username__iexact=username)

        if user.exists():
            raise forms.ValidationError(
                "Ther User already exist with the given username")
        return self.cleaned_data.get('username')


    def clean_email(self):
        email = self.cleaned_data.get('email')
        model = self.Meta.model
        user = model.objects.filter(email__iexact=email)
        if user.exists():
            raise forms.ValidationError(
                "The email already exist with the given email")
        return self.cleaned_data.get('email')


    def clean_password(self):
        password = self.cleaned_data.get('password')
        confirm_password = self.data.get('confirm_password')

        if password != confirm_password:
            raise forms.ValidationError("Password do not match!")
        return self.cleaned_data.get('password')

manager.py:

from django.contrib.auth.base_user import BaseUserManager

class CustomeUserManager(BaseUserManager):
    def create_user(self, username, email, password, **extra_fields):
        if not username:
            raise ValueError("The user must be set")
        if not email:
            raise ValueError("The email must be set")
        if not password:
            raise ValueError("The password must be set")

        email = self.normalize_email(email)
        user = self.model(username = username, email = email, password = password, **extra_fields)
        user.set_password(password)
        user.save()
        return user  

    def create_superuser(self, username, email, password, **extra_fields):
        extra_fields.setdefault('is_staff', True)
        extra_fields.setdefault('is_superuser', True)
        extra_fields.setdefault('is_active', True)

        if extra_fields.get('is_staff') is not True:
            raise ValueError("The super user must have staff=true")

        if extra_fields.get('is_superuser') is not True:
            raise ValueError("The super user must have is_superuser=true")

        return self.create_user(username = username, email = email, password = password, **extra_fields)

Я думаю, что вы создали модель, но не добавили ее в файл settings.py.

settings.py

AUTH_USER_MODEL = 'myapp.MyUser'

Узнайте больше здесь https://docs.djangoproject.com/en/4.0/topics/auth/customizing/

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