Пользовательская админка Django не отражается в админке сайта
Я новичок в django и прохожу через старый проект django, в котором пользовательский администратор настроен следующим образом:
app1/admin.py
from .models import User
@admin.register(User)
class UserAdmin(DjangoUserAdmin):
"""Define admin model for custom User model with no email field."""
fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('email', 'first_name', 'last_name', 'phone_number',
'type_of_user', 'timezone', 'deleted', 'is_supervisor',
'supervisor', 'role')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined',
'created_date')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('email', 'username', 'password1', 'password2'),
}),
)
list_display = ('username', 'first_name', 'last_name', 'is_staff')
search_fields = ('username', 'first_name', 'last_name')
ordering = ('username',)
Также в app1.models.py, где CustomUser
далее наследуется от AbstractBaseUser
.
class User(CustomUser):
first_name = models.CharField(max_length=1024, db_index=True)
last_name = models.CharField(max_length=1024, db_index=True)
phone_number = models.CharField(max_length=1024, blank=True, null=True)
is_supervisor = models.BooleanField(default=False, db_index=True)
license = models.CharField(max_length=1024, blank=True, null=True)
type_of_user = models.IntegerField(choices=TYPE_OF_USER, default=1, db_index=True)
created_date = models.DateTimeField(default=timezone.now)
timezone = TimeZoneField(choices=[(tz, tz) for tz in pytz.all_timezones])
deleted = models.BooleanField(default=False, db_index=True)
load_id = models.CharField(max_length=1024, null=True, blank=True)
approval_status = models.IntegerField(choices=APPROVAL_STATUS, null=True, blank=True)
supervisor = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)
last_alert_sent_on = models.DateTimeField(null=True, blank=True, db_index=True)
role = models.ForeignKey("common.Role", on_delete=models.SET_NULL,
null=True, blank=True)
В settings.py
:
AUTH_USER_MODEL = 'app1.User'
В папке main_app
нет папки admin.py
.
Проблема здесь в том, что модель User
не связана с этой конкретной UserAdmin
.
Даже если я удалю это @admin.register(User) class UserAdmin(DjangoUserAdmin):
в admin.py
, пользователи все равно будут отображаться.
Вот интерфейс администратора для пользователей.
Как видите, поля также отличаются от тех, что определены здесь:
list_display = ('username', 'first_name', 'last_name', 'is_staff')
Почему пользовательская админка не работает в этом случае?
Запускали ли вы миграции django после создания пользовательской модели пользователя? Вы сможете добавить обновленные модели в схему базы данных только после запуска миграций.
Команды для переноса изменений в схему базы данных:
python manage.py migrate
python manage.py makemigrations