Расширьте модель Django User и покажите это администратору. - PullRequest
0 голосов
/ 12 февраля 2019

Я использую последний Django для проекта в интранете.Итак, я следовал документации по django, чтобы расширить мои модели:

from django.db import models
from django.contrib.auth.models import AbstractUser

class Employee(AbstractUser):
    DEPARTMENTS = (
        ('ARE', 'Area Manager'),
        ('IT', 'IT'),
        ('CAT', 'Category manager'),
        ('CON', 'Controling')
    )
    departement = models.CharField(max_length = 3, verbose_name = "Département", choices = DEPARTMENTS)

После этого я переписал admin.py:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User

from .models import Employee

# Define an inline admin descriptor for Employee model
# which acts a bit like a singleton
class EmployeeInline(admin.StackedInline):
    model = Employee
    can_delete = False
    verbose_name_plural = 'Employees'

# Define a new User admin
class UserAdmin(BaseUserAdmin):
    inlines = (EmployeeInline,)

# Re-register UserAdmin
# admin.site.register(User) # return error: django.contrib.admin.sites.NotRegistered: The model User is not registered
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

Как вы можете видеть на 3 последней строкемой admin.py, если я зарегистрирую модель пользователя, у меня будет ошибка.Если я прокомментирую свои последние строки

# Re-register UserAdmin
#admin.site.unregister(User)
admin.site.register(User, UserAdmin)

У меня нет моей администрации пользователя: Admin site django without user management problem

1 Ответ

0 голосов
/ 12 февраля 2019

Ваша проблема в том, что у вашего проекта есть пользовательское определение модели.Рекомендуемый способ получить пользовательский класс в этом случае - использовать get_user_model() из django.contrib.auth.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...