管理者が特定のモデルを保存した後、「シリーズを有効にする」などのメッセージを表示したいと思います。
リストアクション(message_user)の場合、これを行う方法はわかりますが、メインのCRUDフォームからはわかりません。
誰かが方法を知っていますか?
ありがとう
古い質問ですが、これは非常に一般的な問題だと思うので、少なくとも小さな例の価値があります。
@Davor Lucicは、適切な解決策を指摘しました。今日の時点で、Djangoにはクールな メッセージフレームワーク が付属しています。これはこれに大いに役立ちます。
したがって、車のモデル内の車のオブジェクトが所有者を変更するたびに、Django Admin内で通知を送信したい場合は、次のようにすることができます。
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"))
追加するコードが本当に安全であることを確認したほうがよいと言う必要はありません。
例外的なことは何もありませんが、おそらく(そしてうまくいけば)誰かがそれが役に立つと思うでしょう。
オーバーライドできます save_model
ModelAdmin
のメソッドなので、オブジェクトを保存した後、 メッセージフレームワーク を使用して メッセージを追加 できます。