Действие администратора Django для сторонней модели
Как я могу добавить действия в интерфейс администратора стороннего приложения?
Пример: я хочу иметь настраиваемое действие для модели django.contrib.admin.Group
,
Под "действием" я подразумеваю пакетное действие представления администратора в виде модели.
Связанные документы: https://docs.djangoproject.com/en/1.7/ref/contrib/admin/actions/
1 ответ
Решение
Отмените регистрацию администратора модели для Group
модель, а затем зарегистрировать его с вашим собственным ModelAdmin
:
from django.contrib.auth.admin import GroupAdmin
from django.contrib.auth.models import Group
class MyGroupAdmin(GroupAdmin):
actions = [...]
admin.site.unregister(Group)
admin.site.register(Group, MyGroupAdmin)
ОБНОВЛЕНИЕ: если вы хотите добавить действия к ModelAdmin
из нескольких приложений вы должны получить прямой доступ к реестру недокументированного администратора:
def some_action(modeladmin, request, queryset):
pass
admin.site._registry[Group].actions.append(some_action)