2017-04-18 77 views
1

我從BaseInlineFormSet,在那裏我重寫save()方法inheirts類:Django的FORMSET返回空實例

class CustomBaseModelFormSet(BaseInlineFormSet): 
    def save(self, something=None, commit=True, *args, **kwargs): 
     instances = super(CustomBaseModelFormSet, self).save(commit=False) 

,但是當我打電話formset.save()創建一個帶有約束和新對象有效的formset,變量實例是一個空列表!

爲什麼父類的save()沒有保存?沒有任何錯誤的痕跡。

我使用Python 3和Django 1.10.5。

+1

您將承諾設​​置爲False,但在沿途的某個位置是否爲真? – dentemm

+0

是的。無論如何,將提交設置爲False,應該返回實例。 – pisapapiros

回答

0

原來,在BaseModelFormSet類,有一個save_new_objects()方法是跳過我的形式被保存由於以下檢查:

if not form.has_changed(): 
    continue 

所以,在我的ModelForm我重寫了這個方法:

def has_changed(self): 
    return True 

這樣它總是返回True,我的表格被保存。