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

Метод message_user

Метод message_user применяется к экземпляру класса ModelAdmin и позволяет отправлять сообщения пользователю в интерфейсе администратора. Сообщения отображаются в верхней части страницы после выполнения какого-либо действия. Метод использует систему сообщений Django и поддерживает различные уровни важности.

Параметры метода message_user:

  • ⁅b⁆message⁅/b⁆ - текст сообщения, который будет отображен пользователю;
  • ⁅b⁆level⁅/b⁆ - уровень важности сообщения: 'INFO', 'SUCCESS', 'WARNING', 'ERROR' или соответствующие константы из messages (по умолчанию 'INFO');
  • ⁅b⁆extra_tags⁅/b⁆ - дополнительные CSS-классы для кастомизации отображения сообщения (необязательный параметр);
  • ⁅b⁆fail_silently⁅/b⁆ - если True, подавляет исключения при отправке сообщения (по умолчанию False).

Синтаксис

self.message_user(request, message, level='INFO', extra_tags='', fail_silently=False)

Пример

Рассмотрим простой пример использования message_user в кастомном действии администратора:

from django.contrib import admin from django.contrib import messages from .models import Article class ArticleAdmin(admin.ModelAdmin): list_display = ['title', 'status'] @admin.action(description='Mark selected articles as published') def make_published(self, request, queryset): count = queryset.update(status='published') self.message_user( request, f'Successfully published {count} articles.', messages.SUCCESS )

После выполнения действия пользователь увидит сообщение об успешной операции:

"Successfully published 5 articles."

Пример

Пример использования message_user с разными уровнями важности в зависимости от результата операции:

from django.contrib import admin from django.contrib import messages from .models import Category class CategoryAdmin(admin.ModelAdmin): list_display = ['name', 'is_active'] def save_model(self, request, obj, form, change): try: obj.save() if change: self.message_user( request, f'Category "{obj.name}" successfully updated.', messages.SUCCESS ) else: self.message_user( request, f'Category "{obj.name}" successfully created.', messages.SUCCESS ) except Exception as e: self.message_user( request, f'Failed to save category: {str(e)}', messages.ERROR )

В случае ошибки пользователь увидит сообщение:

"Failed to save category: Duplicate entry 'technology' for key 'name'"

Пример

Использование message_user с дополнительными CSS-классами для кастомизации отображения:

from django.contrib import admin from .models import UserProfile class UserProfileAdmin(admin.ModelAdmin): list_display = ['user', 'is_verified'] @admin.action(description='Verify selected users') def verify_users(self, request, queryset): verified = queryset.filter(is_verified=False) count = verified.update(is_verified=True) if count > 0: self.message_user( request, f'{count} users were successfully verified.', level='SUCCESS', extra_tags='custom-success' ) else: self.message_user( request, 'No unverified users found.', level='WARNING', extra_tags='custom-warning' )

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

"No unverified users found."

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

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