【问题标题】:How do I display a confirmation message after a custom admin action with an intermediate page (in Django)?如何在带有中间页面(在 Django 中)的自定义管理操作后显示确认消息?
【发布时间】:2011-11-09 00:31:41
【问题描述】:

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

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

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

【问题讨论】:

    标签: python django django-admin


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      构造一个 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)

      【讨论】:

        猜你喜欢
        • 2017-07-22
        • 2017-10-03
        • 2011-03-15
        • 1970-01-01
        • 1970-01-01
        • 2022-01-16
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多