2010-09-14 40 views
10

我想在管理員保存特定模型後顯示一條消息,如「現在啓用系列」。如何在保存模型後向django管理員顯示消息?

我可以看到,如果它是一個列表動作(message_user),我會怎麼做,但我無法看到如何從主CRUD表單執行此操作。

有誰知道如何?

感謝

+0

我有一個消息,當用戶保存一個條目到管理員(頁面頂部的黃色背景),但不知何故,它消失了。我如何恢復?現在,當用戶發生錯誤時,我只會收到一條消息 – Timo 2014-05-28 12:20:49

回答

24

老問題,但至少值得一個小例子,因爲我認爲這是一個很常見的問題。

@Davor Lucic指出了正確的解決方案。 從今天開始,Django隨附一個很酷的message framework,在這方面有很多幫助。

所以,說你要Django管理內發出通知,只要你的汽車模型內的車對象改變所有者,你可以做這樣的事情:

admin.py

from django.contrib import admin 
from django.contrib import messages 

from .models import Car 


@admin.register(Car) 
class CarAdmin(admin.ModelAdmin): 
    list_display = ('owner', 'color', 'status', 'max_speed',) 

    def save_model(self, request, obj, form, change): 
     if 'owner' in form.changed_data: 
      messages.add_message(request, messages.INFO, 'Car has been sold') 
     super(CarAdmin, self).save_model(request, obj, form, change) 

值得一提的是,如果你想在您的郵件的HTML標籤,你必須添加:

from django.utils.safestring import mark_safe 

允許你可以這樣做:

messages.add_message(request, messages.INFO, mark_safe("Please see <a href='/destination'>here</a> for further details")) 

不需要說你最好確定你添加的代碼是非常安全的。

沒有什麼特別的,但也許(希望)有人會覺得它有用。

+2

而不是'mark_safe',請使用['format_html'](https://docs.djangoproject.com/en/dev/ref/utils/#module-django。 utils.html)('from django.utils.html import format_html')。 – 2016-12-28 09:32:11

+0

這對我有用,但問題是我也看到了內置消息,我只想返回錯誤消息,但它顯示錯誤和成功消息。成功消息來自django。我在看到錯誤時嘗試返回,但仍然看到兩個消息。 – 2017-11-10 08:43:07