Как отобразить подтверждающее сообщение после пользовательского действия администратора с промежуточной страницей (в Django)? - PullRequest
2 голосов
/ 02 сентября 2011

Встроенные действия, которые идут с администратором Django, обычно отображают полезное сообщение после их выполнения в верхней части, например, говоря, что был добавлен новый объект или что у вас есть.

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

Можете ли вы сказать мне, как получить текущий экземпляр ModelAdmin или, если есть лучший способ, как отобразить одно из этих полезных маленьких сообщений, когда я закончу в другом представлении?

Ответы [ 2 ]

3 голосов
/ 15 апреля 2012

Чтобы имитировать метод ModelAdmin.message_user, вам нужно только сделать следующее:

from django.contrib import messages
messages.info(request, message)

Добавление сообщения описано здесь https://docs.djangoproject.com/en/dev/ref/contrib/messages/#adding-a-message и способ, которым ModelAdmin использует его, можно увидеть здесь: https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py#L691

0 голосов
/ 15 апреля 2012

Создайте LogEntry и напишите пользовательский тег шаблона для отображения сообщений на промежуточной странице, например:

  LogEntry.objects.log_action(
      user_id=request.user.id,
      content_type_id=ContentType.objects.get_for_model(yourmodel).pk,
      object_id=case.id,
      object_repr=force_unicode(yourmodel),
      action_flag=ADDITION if created else CHANGE)

подробнее: Django docs (Message Framework)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...