首页 > 解决方案 > 如何在 Django UpdateView 中访问新数据

问题描述

我想在 success_message 中显示新数据,在我的通用 UpdateView 中进行了更改。而且我不知道如何从表单访问这些数据。

一切都像超标准,代码如下:

class ProductOneUpdateView(UpdateView):
    model = ProductOne
    fields = ['quantity']
    success_message = ................

我想要新的数量,由这个成功消息中显示的用户更改。期待您的解答!

标签: djangoformsview

解决方案


正如文档所说:

表单中的已清理数据可用于使用语法进行字符串插值。%(field_name)s

因此,如果这些是表单字段,您可以编写如下消息:

class ProductOneUpdateView(SuccessMessageMixin, UpdateView):
    model = ProductOne
    fields = ['quantity']
    success_message = 'The quantity is updated to %(quantity)s'

对于成功消息的更高级处理,您可以覆盖get_success_message方法 [Django-doc],它传递cleaned_dataas 参数,您可以通过以下方式访问(更新的)对象self.object

class ProductOneUpdateView(SuccessMessageMixin, UpdateView):
    model = ProductOne
    fields = ['quantity']
    def get_success_message(self, cleaned_data):
        return 'The quantity of {} is updated to {}'.format(
            self.object,
            self.cleaned_data['quantity']
        )

推荐阅读