0

我重写了我的 save_model() 函数以将 obj.save() 调用包装在 try/catch 中。

def save_model(self, request, obj, form, change):
    from concurrency.exceptions import RecordModifiedError
    from django.http import HttpResponse
    try: 

        obj.save()
        # some other stuff

    except RecordModifiedError:
        messages.error(request, "[!] Record modified. Please try again.")
        #self.message_user(request, "[!] Record modified. Please try again.", level="error")

捕获 RecordModifiedError 正在工作,并且数据未保存。但是,成功保存时出现的确认消息仍然显示,错误也是如此。我有两个相互矛盾的信息被显示!

我想知道如何防止显示成功消息。谢谢!

编辑:也尝试了该self.message_user()功能,但它也没有阻止成功消息。

4

3 回答 3

0

我认为这应该有效:

storage = messages.get_messages(request)
storage.used = True
messages.error(request, "[!] Record modified. Please try again.")
于 2014-11-29T07:30:44.007 回答
0

不是必须这样吗?

try: 

    obj.save()
    messages.error(request, "[!] Record modified.")

except RecordModifiedError:
    messages.error(request, "[!] Record NOT modified. Please try again.")
于 2014-11-26T18:49:55.993 回答
0

message_user我通过覆盖函数解决了同样的问题。如果有错误,我会设置一个标志。如果设置了标志,则返回,如果未设置,则使用该函数message_user调用基类。message_usersuper

于 2019-04-18T20:35:29.530 回答