Ошибка Django "Пожалуйста, исправьте ошибку ниже"

Пожалуйста, помогите мне, так как я уже просмотрел большинство представленных здесь сообщений и все еще не могу найти решение. Я создал пользовательскую модель пользователя и менеджера в Django. Также создал форму изменения и форму создания. Я могу создать пользователя с помощью оболочки manage.py, но когда я пытаюсь создать пользователя с помощью интерфейса администратора Django, я получаю ошибку "Please correct the error below", но эта ошибка не предоставляет никакой информации об ошибке. Есть много вопросов, которые она задавала по этому поводу, но ни один из них не смог решить мою проблему.

enter image description here

Вот мой менеджер пользователей

class UserManager(BaseUserManager):

def create_user(self, email, first_name, last_name,contact_no, password=None,is_staff=False, is_admin=False, is_active=True):
    if not email:
        raise ValueError('Users must have an email address')
    if not password:
        raise ValueError('Users must have a password')
    if not first_name:
        raise ValueError('Users must have a First Name')            
    if not last_name:
        raise ValueError('Users must have a Last Name')
    if not contact_no:
        raise ValueError('Users must have a Contact No')

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

    user.set_password(password)
    user.first_name = first_name
    user.last_name = last_name
    user.contact_no = contact_no
    user.active = is_active
    user.staff = is_staff
    user.admin = is_admin
    user.save(using=self._db)
    return user

def create_staffuser(self, email, first_name, last_name,contact_no,password=None, is_active=True, is_staff=True, is_admin=False):

    user = self.create_user(
        email,
        password=password,
        first_name=first_name,
        last_name = last_name,
        contact_no=contact_no,
        is_active=is_active,
        is_admin= is_admin
    )
    user.staff = True
    user.save(using=self._db)
    return user

def create_superuser(self, email, first_name, last_name,contact_no, password=None,is_active=True, is_staff=True, is_admin=True):

    user = self.create_user(
        email,
        password=password,
        first_name=first_name,
        last_name = last_name,
        contact_no=contact_no,
        is_active=is_active,
    )
    user.staff = True
    user.admin = True
    user.save(using=self._db)
    return user

Ниже приведена моя модель пользователя

class User(AbstractBaseUser):
email = models.EmailField(
    verbose_name='email address',
    max_length=255,
    unique=True,
)
first_name =  models.CharField(max_length=25)
last_name =  models.CharField(max_length=25)    
contact_no = models.CharField(max_length=10)
active = models.BooleanField(default=True)
staff = models.BooleanField(default=False)
admin = models.BooleanField(default=False)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name','contact_no']

def get_full_name(self):
    return f'{self.first_name} {self.last_name}'

def get_short_name(self):
    return f'{self.email}'

def __str__(self):
    return f'{self.first_name} {self.last_name} | {self.email}'        

def has_perm(self, perm, obj=None):
    return True

def has_module_perms(self, app_label):
    return True

@property
def is_staff(self):
    return self.staff

@property
def is_admin(self):
    return self.admin

objects = UserManager()

Форма создания пользователя

class UserCreationForm(forms.ModelForm):
password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
password2 = forms.CharField(label='Password confirmation', widget=forms.PasswordInput)

class Meta:
    model = User
    fields = ('email', 'first_name', 'last_name','contact_no','active')

def clean_password2(self):
    # Check that the two password entries match
    password1 = self.cleaned_data.get("password1")
    password2 = self.cleaned_data.get("password2")
    if password1 and password2 and password1 != password2:
        raise ValidationError("Passwords don't match")
    return password2

def save(self, commit=True):
    # Save the provided password in hashed format
    user = super().save(commit=False)
    user.set_password(self.cleaned_data["password1"])
    if commit:
        user.save()
    return user

Форма смены пользователя

class UserChangeForm(forms.ModelForm):
"""A form for updating users. Includes all the fields on
the user, but replaces the password field with admin's
disabled password hash display field.
"""
password = ReadOnlyPasswordHashField()

class Meta:
    model = User
    fields = ('email', 'password', 'first_name', 'last_name','contact_no',)

User Admin Clas

class UserAdmin(BaseUserAdmin):
form = UserChangeForm
add_form = UserCreationForm
list_display = ('email', 'first_name', 'last_name','contact_no',)
list_filter = ('first_name','last_name')
fieldsets = (
    (None, {'fields': ('email', 'password')}),
    ('Personal info', {'fields': ('first_name', 'last_name','contact_no',)}),
)
add_fieldsets = (
    (None, {
        'classes': ('wide',),
        'fields': ('email', 'first_name', 'last_name','contact_no','password', 'password2',),
    }),
)
search_fields = ('email',)
ordering = ('email',)
filter_horizontal = ()

Тогда я зарегистрировал User и UserAdmin

admin.site.register(User,UserAdmin)
admin.site.unregister(Group)
Вернуться на верх