Недостаточно добавить поле в форму, вы также должны добавить его в модель.
Для этого вам необходимо создать пользовательский класс в вашем models.py
:
from django.contrib.auth.models import AbstractUser
STATUS_CHOICES = (
(1, ("CEO")),
(2, ("Dev Manager")),
(3, ("Testing Manager")),
(4, ("Developer")),
(5, ("Test Engineer"))
)
class User(AbstractUser):
status forms.ChoiceField(choices = STATUS_CHOICES, verbose_name ="Designation")
Затем вам нужно изменить настройки AUTH_USER_MODEL
, чтобы они указывали на вашу модель соответственно. Предполагая, что приложение, которое содержит вашу новую пользовательскую модель, называется my_app
, настройка будет выглядеть следующим образом:
AUTH_USER_MODEL = 'my_app.User'
Вы также должны убедиться, что любые поля ForeignKey
в вашей модели используют AUTH_USER_MODEL
вместо django.contrib.auth.models.User
:
из django.conf настройки импорта из моделей импорта django.db
class Article(models.Model):
author = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
)
Также не забудьте создать и применить миграцию базы данных:
python manage.py makemigrations
python manage.py migrate
К сожалению, изменение пользовательской модели в середине проекта может привести к сложным проблемам, поэтому, если вы все еще находитесь на ранней стадии проекта, может быть проще всего удалить и заново создать базу данных.
Обратитесь к вашемумодель с get_user_model()
в вашей форме:
from django.contrib.auth import get_user_model
class SignUpForm(UserCreationForm):
...
class Meta:
model = get_user_model()
Пожалуйста, обратитесь к документации по Замена пользовательской модели пользователя