如何使用中间页面(在Django中)自定义管理操作后显示确认消息?

时间:2011-09-02 08:57:52

标签: python django django-admin

Django管理员附带的内置操作通常会在顶部执行后显示一条有用的消息,例如:说添加了一个新对象或者你有什么。

docs显示了如何使用可以表示为自定义ModelAdmin方法的简单操作来完成此操作。但是,对于需要中间页面的自定义操作(在同一页面上进一步覆盖),我鼓励将用户传递到另一个视图。这很好,但这意味着我无法再访问自定义的ModelAdmin实例以调用其message_user()方法......或者至少我不知道如何获取它。

您能告诉我如何获取当前的ModelAdmin实例,或者,如果有更好的方法,当我在其他视图中完成时,如何显示其中一条有用的小消息?

2 个答案:

答案 0 :(得分:3)

要模仿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

答案 1 :(得分:0)

构建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)