在UserModel的管理页面添加自定义操作

9 投票
2 回答
5128 浏览
提问于 2025-04-16 03:46

有没有办法在Django的用户模型管理页面上创建自定义操作?我想自动化将用户添加到某个组里(比如把他设置为员工,设置一些额外的值等等),当然也希望能创建一些操作来撤销这些更改。

谢谢你的帮助。

2 个回答

4

这是一个实际的例子,展示了如何在不影响所有默认的内联操作的情况下进行操作。
在这里,我们将添加一个可以激活选定用户的功能。

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin


def make_active(modeladmin, news, queryset):
    queryset.update(is_active=True)
make_active.short_description = u"Activate selected Users"

class CustomUserAdmin(UserAdmin):
    actions = [make_active]


admin.site.unregister(User)
admin.site.register(User, CustomUserAdmin)
16

在你的 admin.py 文件中导入 User,然后把它注销掉,再为它创建一个新的 ModelAdmin(或者可以在默认的基础上进行修改),然后就可以尽情发挥了。

大概会像这样:

from django.contrib.auth.models import User

class UserAdmin(admin.ModelAdmin):
    actions = ['some_action']

    def some_action(self, request, queryset):
        #do something ...
    some_action.short_description = "blabla"

admin.site.unregister(User)
admin.site.register(User, UserAdmin)

关于操作的参考资料。

撰写回答