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

问题描述 投票:6回答:2

是否有可能在django UserModel的管理页面中创建自定义操作?我希望自动化将用户添加到组(例如将他添加到员工,设置一些额外的值等),当然还要创建将这些更改恢复的操作。

谢谢你的帮助。

python django django-admin django-users
2个回答
13
投票

在你的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)

Reference for actions.


1
投票

工作示例不会丢失所有默认内联操作等。 在这里,我们将添加激活所选用户的操作。

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)
© www.soinside.com 2019 - 2024. All rights reserved.