我希望有一个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)
相反,我也有兴趣听到令人信服的理由,为什么这不是一个好主意。
答案 0 :(得分:2)
这并不是ModelForm本身所属的东西。模型已经自动执行此操作 - 如果模型实例具有pk
的值,则会更新,否则将插入。因此,在实例化表单时,您需要做的就是传入一个现有的模型实例,它将在表单保存时更新,或者传入一个空实例(甚至只是None
),在这种情况下是一个新实例将被创建。