我想在多个应用的用户管理后端中显示自定义模型。 我可以使用经典的admin.py命令只为一个应用程序执行此操作:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
from my_user_profile_app.models import Employee
class EmployeeInline(admin.StackedInline):
model = Employee
can_delete = False
verbose_name_plural = 'employee'
# Define a new User admin
class UserAdmin(UserAdmin):
inlines = (EmployeeInline, )
# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
但是,以下应用程序会替换所有以前注册的模型,依此类推...... 是否有一种干净的方法在用户管理后端附加模型? 这就像应用程序的admin.py必须知道之前所做的所有自定义,并再次注册它们。
答案 0 :(得分:0)
我建议您将所有内联导入到您应用的某个admin.py中,并在那里定义用户admin。
from myapp.admin import MyInline
from my_other_app.admin import MyOtherInline
# Define a new User admin
class MyUserAdmin(UserAdmin): # I would avoid using the same name
inlines = (MyInline, MyOtherInline)
# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
Django没有自动向模型管理员注册其他内联的机制。你可以创建一个,但代码可能很脆弱。我喜欢上面的明确方法。