Python 扩展Django用户模型并在admin上显示

Python 扩展Django用户模型并在admin上显示,python,django,django-admin,django-users,Python,Django,Django Admin,Django Users,我将最新的django用于内部网项目。我遵循django文档扩展了我的模型: from django.db import models from django.contrib.auth.models import AbstractUser class Employee(AbstractUser): DEPARTMENTS = ( ('ARE', 'Area Manager'), ('IT', 'IT'), ('CAT', 'Categor

我将最新的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)
正如您在我的admin.py的最后3行中所看到的,如果我注册了用户模型,我就有一个错误。如果我评论我的最后几行

# Re-register UserAdmin
#admin.site.unregister(User)
admin.site.register(User, UserAdmin)
我没有我的用户管理:

您的问题是您的项目具有自定义模型用户定义。在这种情况下,获取用户类的建议方法是使用
django.contrib.auth
中的
get\u user\u model()
,您的问题是您的项目具有自定义模型用户定义。在这种情况下,获取用户类的建议方法是使用
django.contrib.auth中的
get\u user\u model()
进行迁移吗
python manage.py makemigrations
python manage.py migrate
您从admin.py的错误位置导入了
User
模型。您需要从
myApp.models
导入它,但您正在导入默认用户modelcheckout@VaibhavVishal:如果我写入admin.site.register(Employee,UserAdmin),我会得到以下错误::(admin.E202)'employees.Employee'没有指向'employees.Employee'的外键。您不需要内联,为了避免混淆,您应该将自定义用户模型命名为
user
,而不是
Employee
。您是否进行了迁移
python manage.py makemigrations
python manage.py migrate
您从admin.py的错误位置导入了
User
模型。您需要从
myApp.models
导入它,但您正在导入默认用户modelcheckout@VaibhavVishal:如果我写入admin.site.register(Employee,UserAdmin),我会得到以下错误::(admin.E202)'employees.Employee'没有指向'employees.Employee'的外键。您不需要内联,为了避免混淆,您应该将自定义用户模型命名为
user
,而不是
Employee
。我必须将owner=models.ForeignKey()添加到我的models Employee中?您的意思是添加一个字段
owner=models.OneToOneField(get\u user\u model())
?不,不要那样做。我的意思是,不要访问类
User
,而是取一个名为
employee=get\u User\u model()
,并将其注册到admin中。我必须将owner=models.ForeignKey()添加到我的models employee中?你的意思是添加一个字段
owner=models.OneToOneField(get\u User\u model())
?不,不要那样做。我的意思是,不要访问类
User
,而是取一个名为
employee=get\u User\u model()
,并将其注册到admin中。