РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
610 of 818 menu

Декоратор admin.action

Декоратор admin.action применяется к функциям, которые определяют пользовательские действия для административной панели Django. Действия отображаются в выпадающем списке на странице списка объектов модели и позволяют выполнять операции над выбранными записями. Декоратор принимает параметр description, который задает текст действия в интерфейсе администратора. Функция действия принимает три аргумента: modeladmin - экземпляр класса администратора, request - объект HTTP-запроса и queryset - набор выбранных объектов.

Синтаксис

from django.contrib import admin @admin.action(description="Description text") def action_name(modeladmin, request, queryset): # Perform action on queryset queryset.update(field=value)

Пример

Создадим действие для массовой публикации статей. Действие будет изменять статус выбранных статей на "published":

from django.contrib import admin from myapp.models import Article @admin.action(description="Publish selected articles") def publish_articles(modeladmin, request, queryset): updated = queryset.update(status="published") modeladmin.message_user( request, f"{updated} articles were successfully published." )

Результат выполнения действия:

"5 articles were successfully published."

Пример

Добавим действие для архивации выбранных пользователей. Также укажем параметр permissions для ограничения доступа к действию:

from django.contrib import admin from myapp.models import User @admin.action( description="Archive selected users", permissions=["change"], ) def archive_users(modeladmin, request, queryset): updated = queryset.update(is_active=False) modeladmin.message_user( request, f"{updated} users were archived.", level="WARNING", )

Результат выполнения кода:

"3 users were archived."

Пример

Регистрация действия в классе ModelAdmin с использованием атрибута actions:

from django.contrib import admin from myapp.models import Article @admin.action(description="Publish selected articles") def publish_articles(modeladmin, request, queryset): updated = queryset.update(status="published") modeladmin.message_user( request, f"{updated} articles published." ) @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ["title", "status", "created_at"] actions = [publish_articles]

Смотрите также

  • декоратор admin.register,
    который регистрирует модель в административной панели
  • атрибут actions,
    который определяет список доступных действий для модели
  • класс ModelAdmin,
    который настраивает отображение модели в административной панели
  • декоратор admin.display,
    который настраивает отображение полей в списке объектов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить