Зарегистрировать пользовательскую модель пользователя с помощью 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