2017-08-09 38 views
0

我正在使用Django 1.11。我目前正在解決以下問題:模型字段的單個ModelForm,只更新時間子集

目前我有一個單一的模型(不同的形式有不同的領域的模型在他們,例如modelForm1有fieldA,modelForm2有fieldB,fieldC和fieldD,。 ..)。這是因爲在模板中我需要將表單放在不同的位置(因爲UI)。

我想知道是否有可能只有一個ModelForm與所有字段的聯合,只會更新它通過request.POST接收的字段,留下其他人。

爲了簡單起見,我們假設所有的字段都是非必需的並且沒有驗證。 (一種可能的解決方案是將模板中的所有字段封裝爲「大」形式,但這不適用於我,因爲模板中存在更多不同的非模型形式,並且HTML不能重疊或巢)。

謝謝。

回答

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通話每次保存法依賴於你的HTTP-POST的目標位置。

# ... 
if modelForm.is_valid() 
    modelForm.save() 
    # ... 

# ... 
if modelForm.is_valid() 
    modelForm.save_fieldset1() 
    # ... 

# ... 
if modelForm.is_valid() 
    modelForm.save_fieldset2() 
    # ...