Как изменить поле username на user_name в пользовательской модели пользователя django?

Я создал пользовательскую модель пользователя. теперь я хочу использовать user_name в качестве поля имени пользователя вместо username. как показано в следующем фрагменте кода.

class CustomUser(AbstractBaseUser):
    
    username_validator = UnicodeUsernameValidator()

    user_name = models.CharField(
        _('username'),
        max_length=100,
        unique=True,
        help_text=_('Required. 100 characters or fewer. Letters, digits and @/./+/-/_ only.'),
        validators=[username_validator],
        error_messages={
            'unique': _("A user with that username already exists."),
        },
    )
    USERNAME_FIELD = 'user_name'

Я не могу сделать это. Я получаю следующую ошибку:

SystemCheckError: System check identified some issues:
ERRORS:
<class 'accounts.admin.CustomUserAdmin'>: (admin.E033) The value of 'ordering[0]' refers to 'username', which is not an attribute of 'accounts.CustomUser'.
<class 'accounts.admin.CustomUserAdmin'>: (admin.E108) The value of 'list_display[0]' refers to 'username', which is not a callable, an attribute of 'CustomUserAdmin', or an attribute or method on 'accounts.CustomUser'

Причина использования этого заключается в том, что все таблицы базы данных проекта имеют такую конфигурацию. Было бы лучше, если бы я мог определить имя поля в базе данных так же, как мы делаем это для таблиц в классе Meta, как показано ниже. где я вызываю мою пользовательскую модель пользователя как модель пользователя в базе данных.

class Meta:
        db_table = "user"

есть ли возможность вызвать поле таблицы таким образом?

class Meta:
            db_table_user_name = "username"

если это возможно, то нам не нужно менять username на user_name. мы можем напрямую вызвать поле username равное user_name в базе данных. если и только если это возможно с моделями django.

в файле admin.py, где вы регистрируете модель User. вы регистрируете ее в ModelAdmin и в этом ModelAdmion вы неправильно назвали поле. измените его на user_name и их.

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