自定义Django用户管理后台
我有一个Django应用,用户有一些额外的数据。这些数据保存在一个叫做Profile
的模型里,这个模型通过OneToOneField
与User
关联。
这样做没问题,基本上都能满足需求,但我在定制User
的管理界面时遇到了一些麻烦。具体来说:
- 我想在
list_display
中显示一个Profile
字段,但我不知道怎么做,不想在User
上再写一个额外的方法。 - 我还想在
User
的详细页面中显示一些关于相关模型的信息(比如用户拥有的一些资源)。同样,我不知道怎么做,也不想写一个自定义的User
方法。
你知道有什么解决办法吗?
2 个回答
1
你只需要在admin.py文件中编辑管理员类。你可以使用admin.inline*类来帮助你。下面是来自Django官网的一个例子,它会把书籍添加到作者的管理页面:
class BookInline(admin.TabularInline):
model = Book
class AuthorAdmin(admin.ModelAdmin):
inlines = [
BookInline,
]
admin.site.register(Author, AuthorAdmin)
想了解更多,可以点击 这里。
补充说明:你应该可以在UserAdmin模型上添加方法,并在设置list_display字段时引用它们:
list_display = (..., 'your_method')
0
原来,我们可以把方法放在 UserAdmin
里面,而不是放在 User
模型里。这样一来,我就能获取到关于用户的所有信息了。