【问题标题】:Django Admin Remove default save messageDjango 管理员删除默认保存消息
【发布时间】:2018-09-25 16:46:07
【问题描述】:

我在我的模型管理员中添加了这条额外的消息,基本上我想删除默认的。有没有人可以帮助我做到这一点?

我的实际信息:

def save_model(self, request, obj, form, change):
        # add an additional message
        user = request.user
        messages.info(request, "Dear " + str(user)+ " "+ " please note that your parking plot has been reserved")
        super(ParcareModelAdmin, self).save_model(request, obj, form, change)

默认的有点烂!

谢谢!

【问题讨论】:

    标签: django message default


    【解决方案1】:

    我解决了这个问题如下,虽然它不是很优雅但它工作:

    from django.contrib import messages
    from django.contrib import admin
    
    # Register your models here.
    from . import models
    
    
    class RemoveAdminDefaultMessageMixin:
    
        def remove_default_message(self, request):
            storage = messages.get_messages(request)
            try:
                del storage._queued_messages[-1]
            except KeyError:
                pass
            return True
    
        def response_add(self, request, obj, post_url_continue=None):
            """override"""
            response = super().response_add(request, obj, post_url_continue)
            self.remove_default_message(request)
            return response
    
        def response_change(self, request, obj):
            """override"""
            response = super().response_change(request, obj)
            self.remove_default_message(request)
            return response
    
        def response_delete(self, request, obj_display, obj_id):
            """override"""
            response = super().response_delete(request, obj_display, obj_id)
            self.remove_default_message(request)
            return response
    
    
    class MessageAdmin(RemoveAdminDefaultMessageMixin, admin.ModelAdmin):
    
        def save_model(self, request, obj, form, change):
            self.message_user(request, 'save success!')
            return super().save_model(request, obj, form, change)
    
    
    admin.site.register(models.Message, MessageAdmin)
    

    【讨论】:

      【解决方案2】:

      不是最优雅的解决方案,但您始终可以覆盖 ModelAdmin 类的 response_addresponse_change 方法,删除 self.message_user 调用,如果您不希望 @ 987654328@ 文件,您可以在帮助文件中创建一个SilentModelAdmin,在其中覆盖这些方法并删除您不想显示的消息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-08-18
        • 2019-08-04
        • 1970-01-01
        • 2011-03-05
        • 1970-01-01
        • 2021-09-25
        • 1970-01-01
        相关资源
        最近更新 更多