Python 扩展Django用户模型并在admin上显示
我将最新的django用于内部网项目。我遵循django文档扩展了我的模型: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
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中。