Зарегистрировать пользовательскую модель пользователя с помощью admin auth
В проекте Django у меня есть пользовательская модель, которая добавляет одно дополнительное поле:
class User(AbstractUser):
company = models.ForeignKey(Company, null=True, blank=True)
Эта модель определена в моем приложении, например MyApp.models
.
Как я могу получить новую модель User
для отображения в разделе "Аутентификация и авторизация" в качестве исходной модели django.contrib.auth
?
![введите описание изображения здесь]()
Ответы
Ответ 1
В admin.py используйте
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff')
admin.site.register(User, UserAdmin)
Ответ 2
class User(AbstractUser):
class Meta:
app_label = 'auth'
Это может решить вашу проблему, но может вызвать некоторые ошибки при переносе приложения. Другой хак определите get_app_list
в вашем AdminSite
.
Ответ 3
Я думаю, что вы ищете, чтобы заменить модель пользователя Django. Для этого см. ответ в этом посте: Расширение модели User с помощью пользовательских полей в Django. Я бы предложил пойти по расширенному маршруту, но это означало бы, что родительская и дочерняя модели должны быть зарегистрированы.
Если вы действительно хотите одну модель, просто установите настройку AUTH_USER_MODEL
для вашей модели. По сути, это заменяет модель по умолчанию.
В ваших settings.py:
AUTH_USER_MODEL = "appname.UserModelName"
Подробнее о замене модели пользователя см. https://docs.djangoproject.com/en/dev/topics/auth/customizing/#substituting-a-custom-user-model.
Ответ 4
Вам необходимо импортировать свою пользовательскую модель пользователя, а не исходную версию django.contrib.auth.models.User.
Так что должно работать только с
from django.contrib.auth.admin import UserAdmin
from myapp.models import CustomUser
admin.site.register(CustomUser, UserAdmin)
в вашем admin.py