2012-12-20 42 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