保存模型后如何向 django 管理员显示消息?

新手上路,请多包涵

我想在管理员保存特定模型后向他们显示一条消息,例如“现在启用该系列”。

如果它是列表操作 (message_user),我可以看到如何执行此操作,但我无法从主 CRUD 表单中看到如何执行此操作。

有谁知道怎么做?

谢谢。

原文由 Roger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 626
1 个回答

老问题,但至少值得举个小例子,因为我认为这是一个很常见的问题。

@Davor Lucic 指出了正确的解决方案。截至今天,Django 附带了一个很酷的 消息框架,在这方面有很大帮助。

因此,假设您想在 Car 模型中的汽车对象更改所有者时在 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"))

不用说,您最好确保您添加的代码是真正安全的。

没什么特别的,但也许(并希望)有人会发现它有用。

原文由 Seether 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题