如何在 Django CRUD 中自定义 auth.User 管理页面?
Posted
技术标签:
【中文标题】如何在 Django CRUD 中自定义 auth.User 管理页面?【英文标题】:How to customize the auth.User Admin page in Django CRUD? 【发布时间】:2011-01-17 06:02:27 【问题描述】:我只想在 Django CRUD 管理站点的用户列表中添加订阅日期。 我该怎么做?
感谢您的帮助
【问题讨论】:
【参考方案1】:我终于在我的 admin.py 文件中这样做了:
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
UserAdmin.list_display = ('email', 'first_name', 'last_name', 'is_active', 'date_joined', 'is_staff')
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
【讨论】:
我们也可以扩展 UserAdmin 而不是动态修改它! 澄清一下,这应该添加到您网站的*** admin.py 文件中。 请问你说的***是什么意思? 这意味着你应该在你的Django项目的根目录下创建一个admin.py
文件(与你的wsgi.py或settings.py文件在同一级别)
也许你错过了from django.contrib import admin
?【参考方案2】:
另一种方法是扩展 UserAdmin 类。
你也可以创建一个函数放在list_display上
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class CustomUserAdmin(UserAdmin):
def __init__(self, *args, **kwargs):
super(UserAdmin,self).__init__(*args, **kwargs)
UserAdmin.list_display = list(UserAdmin.list_display) + ['date_joined', 'some_function']
# Function to count objects of each user from another Model (where user is FK)
def some_function(self, obj):
return obj.another_model_set.count()
admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
【讨论】:
我也可以这样做(没有__init__
),还是有问题? class CustomUserAdmin(UserAdmin): list_display = list(UserAdmin.list_display) + ['date_joined']
不应该是CustomUserAdmin.list_display =
.. 而不是UserAdmin.list_display =
吗?
@AmichaiSchreiber 我认为两者都有效,但我同意CustomUserAdmin.list_display =
是更清洁的解决方案【参考方案3】:
在 admin.py 中
导入用户管理员
from django.contrib.auth.admin import UserAdmin
输入你需要的字段:
UserAdmin.list_display = ('email','is_active') # Put what you need
就是这样!它适用于 Django3
【讨论】:
【参考方案4】:假设您的用户类别为User
,订阅日期字段为subscription_date
,这就是您需要在admin.py
中添加的内容
class UserAdmin(admin.ModelAdmin):
list_display = ('subscription_date',)
admin.site.register(User, UserAdmin)
【讨论】:
这应该继承自内置的 UserAdmin,否则您将丢失所有其余的自定义设置。而且您也必须取消注册内置注册; Natim 的答案是正确的代码。以上是关于如何在 Django CRUD 中自定义 auth.User 管理页面?的主要内容,如果未能解决你的问题,请参考以下文章
python/django models中自定义用户认证及django admin自定义