2012-12-20 179 views
4

我有一个预保存信号侦听器,用于更新第二个模型。与此相同例如:显示来自管理员信号的自定义消息

我希望让用户知道听者成功地更新模型,并提供一些信息。通常情况下,我会认为我可以使用django提供的内置消息功能。问题在于信号无法访问'请求'。所以我看不到如何使用内置的Django消息框架。

是否有在管理将消息发送到用户的已知方法?也许通过覆盖其中一个模型的save()方法? (发送信号或接收的信号),但我不认为save()方法也可以访问'请求'?

这一定是别人想要做的事情吗?

回答

5

您可以覆盖ModelAdmin中的save_model方法。就像这样:

from django.contrib import messages 
# your imports 
... 
# your code 

def save_model(self, request, obj, form, change): 
    obj.user = request.user 
    obj.save() 
    # you can just call super(YourModelAdminName, self).save_model(request, obj, form, change) 
    messages.add_message(request, messages.INFO, 'Text of message') 
+0

save()和save_model()有什么区别?当我查看save()时,它没有这些参数?它何时被调用?我在文档中找到了save_model(),但我没有看到这些信息。 – Jglstewart

+0

对不起,但ModelAdmin中没有save()方法。只有save_model()。 – Max