簡體   English   中英

擴展Django用戶模型並在admin上顯示

[英]Extend Django User model and show this on admin

我將最新的django用於Intranet項目。 好吧,我按照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沒有用戶管理問題

您的問題是您的項目具有自定義模型用戶定義。 在這種情況下,建議的獲取用戶類的方法是使用django.contrib.auth get_user_model()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM