Добавление настраиваемого действия на страницу администратора UserModel - PullRequest
6 голосов
/ 06 сентября 2010

Есть ли возможность создать пользовательское действие на странице администратора для django UserModel? Я хочу автоматизировать добавление пользователя в группу (например, добавление его в штат, установить дополнительные значения и т. Д.) И, конечно, создать действия, которые возвращают эти изменения обратно.

Спасибо за вашу помощь.

Ответы [ 2 ]

13 голосов
/ 06 сентября 2010

Импортируйте User в ваш admin.py, отмените регистрацию, создайте для него новый 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)

Справочник по действиям.

1 голос
/ 20 августа 2016

Рабочий пример без потери всех встроенных действий по умолчанию и т. Д.
Здесь мы добавим действие, которое активирует выбранных пользователей.

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)
...