2017-04-18 75 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,我的表格被保存。