Django FormView:区分创建和更新

ptr

我有一个自定义FormView类的mixin,如果保存成功,它仅添加一条成功消息,因此:

class MessagesMixin(object):

    def form_valid(self, form):
        response = super(MessagesMixin, self).form_valid(form)
        messages.add_message(self.request,
                             messages.SUCCESS,
                             'Successfully created %s' % form.instance)
        return response

如您所见,这实际上只涉及创建。如果实例已更新,则消息仍将显示“已创建”。有没有办法在form_valid方法中区分创建/更新?

斯科特·伍德(Scott Woodall)

一种解决方案是将一个属性添加到您的mixin,然后在您的UpdateCreate视图中设置它您可以定义静态属性,也可以在get_form_valid_msg需要动态内容的情况下重载它们未经测试的代码:

from django.core.exceptions import ImproperlyConfigured

class MessagesMixin(object): 
    @property
    def form_valid_msg(self):
        raise ImproperlyConfigured("you're missing the 'form_valid_msg' property")

    def get_form_valid_msg(self):
        return self.form_valid_msg

    def form_valid(self, form):
        response = super(MessagesMixin, self).form_valid(form)

        msg = 'Successfully {form_valid_msg} {form}'.format(
            form_valid_msg=self.get_form_valid_msg(),
            form=form.instance
        )

        messages.success(self.request, msg)

        return response

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

django-rest-framework ManyToManyField创建和更新

来自分类Dev

Django ModelForms __init__ kwargs创建和更新

来自分类Dev

如何自动处理 Django 模型的创建和更新日期?

来自分类Dev

在模板中区分创建和更新表单

来自分类Dev

django 中的 ValueError 何时在创建和更新中触发,我该如何解决?

来自分类Dev

键入错误以在 django rest 框架中创建和更新我的列表

来自分类Dev

django-使用FormView和ModelForm更新模型

来自分类Dev

Django FormView不保存

来自分类Dev

Django FormView与CreateView

来自分类Dev

坚持Django FormView数据

来自分类Dev

Django Formview 不会验证

来自分类Dev

Django使用一个模板创建和编辑页面

来自分类Dev

在Django管理表单中显示创建和编辑的字段

来自分类Dev

django 的 `save()` 是创建还是更新?

来自分类Dev

Django FormView中的多个.save()

来自分类Dev

Django-FormView与Mixin结合

来自分类Dev

Django-FormView与Mixin结合

来自分类Dev

Django的。简单的FormView不保存

来自分类Dev

创建和更新状态面板

来自分类Dev

Django更新或创建时的性能优化

来自分类Dev

Django-更新或创建语法帮助(错误)

来自分类Dev

Django 更新或创建 where field like/beings with

来自分类Dev

每次在Django中调用clean时,创建和遍历“坏”值列表的替代方法?

来自分类Dev

如何以Django形式干燥(我自己)以创建和编辑表单

来自分类Dev

区分 Django 中的“帐户类型”

来自分类Dev

如何在Django中使用FormView

来自分类Dev

将Django脆皮表单与FormView混合

来自分类Dev

FormView没有在Django中保存数据

来自分类Dev

如何在Django中使用FormView