首页 文章

单个ModelForm用于模型字段,仅在时间更新子集

提问于
浏览
0

我正在使用Django 1.11 . 我目前正在解决以下问题:

目前我对单个模型有多个ModelForms(不同的形式在其中具有不同的模型字段,例如modelForm1具有fieldA,modelForm2具有fieldB,fieldC和fieldD,......) . 这是因为在模板中我需要将表单放在不同的地方(因为UI) .

我想知道是否有可能只有一个ModelForm与所有字段的联合只会更新它通过request.POST接收的字段,而其他字段保持不变 .

为简单起见,我们假设所有字段都是非必需的,并且没有验证 .

(一种可能的解决方案是以“大”形式封装模板中的所有字段,但这对我不起作用,因为模板中还有更多不同的非模型形式,HTML不能重叠或嵌套 . )

谢谢 .

1 回答

  • 0

    您可以为一个modelForm实现多个save()方法 . 例如 .

    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()
       # ...
    

相关问题