自定义Django用户管理后台

0 投票
2 回答
528 浏览
提问于 2025-04-17 06:06

我有一个Django应用,用户有一些额外的数据。这些数据保存在一个叫做Profile的模型里,这个模型通过OneToOneFieldUser关联。

这样做没问题,基本上都能满足需求,但我在定制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 模型里。这样一来,我就能获取到关于用户的所有信息了。

撰写回答