ModelForm中的create_or_update

时间:2010-04-28 20:55:08

标签: python django django-models django-forms

我希望有一个ModelForm可以根据请求参数create_or_update一个模型实例。

我一直在努力拼凑一些东西,但我意识到我的python fu不够强大,而ModelForm的实现代码非常多毛。

我发现这个update_or_create snipplet用于处理模型,但我认为如果将它与ModelForm集成将会非常有用。

我希望它的行为类似于ModelForm.save():

class BetterModelForm(forms.ModelForm):
    def create_or_update(self):
        #magic
        return (instance, created, updated)

相反,我也有兴趣听到令人信服的理由,为什么这不是一个好主意。

1 个答案:

答案 0 :(得分:2)

这并不是ModelForm本身所属的东西。模型已经自动执行此操作 - 如果模型实例具有pk的值,则会更新,否则将插入。因此,在实例化表单时,您需要做的就是传入一个现有的模型实例,它将在表单保存时更新,或者传入一个空实例(甚至只是None),在这种情况下是一个新实例将被创建。