我正在使用Django 1.11。我目前正在解决以下问题:
目前,我为单个模型提供了多个ModelForms(不同的表单中有不同的模型字段,例如modelForm1有fieldA,modelForm2有fieldB,fieldC和fieldD,......)。这是因为在模板中我需要将表单放在不同的位置(因为UI)。
我想知道是否有可能只有一个ModelForm与所有字段的联合,它们只更新它通过request.POST接收的字段,而保留其他字段。
为简单起见,我们假设所有字段都是非必需字段且没有验证。
(一种可能的解决方案是以“大”形式封装模板中的所有字段,但这对我不起作用,因为模板中还有更多不同的非模型形式,HTML不能重叠或嵌套。)
谢谢。
答案 0 :(得分:0)
您可以为一个modelForm实现多个save()方法。 E.g。
def save(self) #standard
# do the regular save
super().save()
def save_fieldset1(self)
# handle some fields
super().save()
def save_fieldset2(self)
# handle some other fields
super().save()
然后在 views.py 中调用每个save-method,这取决于你的http-POST的目标位置。
# ...
if modelForm.is_valid()
modelForm.save()
# ...
# ...
if modelForm.is_valid()
modelForm.save_fieldset1()
# ...
# ...
if modelForm.is_valid()
modelForm.save_fieldset2()
# ...