假设我的模型 FooBar 包含两个字段 Foo 和 Bar 。然后,如果我使用modelform只编辑现有记录的 Foo 字段,我可以使用实例保留 Bar 数据,即
foobar = FooBar.objects.get(...)
foobar_form = FooBarForm(request.post, instance=foobar)
对于表单集,这相当于什么?到目前为止,我已经尝试了实例,Django告诉我,它不存在于formset和initial,我用它来填充GET请求中的formset,
foobar = FooBar.objects.filter(...)
foobar_formset = FooBarFormSet(request.post, initial = foobar.values())
排除初始参数使得has_changed()始终返回True,而包含初始参数使得has_changed()反映了表单POST数据的实际状态。这告诉我, bar 字段数据在某处被拾取,但是当我迭代foobar_formset并执行
时for foobar_form in foobar_formset:
foobar_form.save()
我从调试器中得到一个错误,在列#34; Bar"中说空值违反非空约束。详细信息:失败的行包含(' foo_value',null)。