【问题标题】:Django formset return empty instancesDjango formset 返回空实例
【发布时间】:2017-09-14 16:04:34
【问题描述】:

我有一个继承自 BaseInlineFormSet 的类,我在其中重写了 save() 方法:

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

但是当我调用 formset.save() 来创建具有绑定且有效的表单集的新对象时,变量实例是一个空列表!

为什么父类的 save() 没有保存?没有任何错误的痕迹。

我正在使用 Python 3 和 Django 1.10.5。

【问题讨论】:

  • 您将 commit 设置为 False,但在更远的地方它是 True 吗?
  • 是的。无论如何,将 commit 设置为 False,应该返回实例。

标签: python django django-forms formset inline-formset


【解决方案1】:

原来在 BaseModelFormSet 类中,由于以下检查,有一个 save_new_objects() 方法跳过了要保存的表单:

if not form.has_changed():
    continue

所以,在我的 ModelForm 中,我重写了这个方法:

def has_changed(self):
    return True

这样它总是返回 True 并且我的表单被保存。

【讨论】:

    猜你喜欢
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 2013-11-15
    • 2011-08-21
    • 1970-01-01
    • 2015-12-28
    • 2011-11-09
    相关资源
    最近更新 更多