【发布时间】:2018-04-09 21:35:10
【问题描述】:
假设我有一个模型 FooBar 包含两个字段 Foo 和 Bar。然后,如果我使用模型表单仅编辑现有记录的 Foo 字段,则可以使用实例保留 Bar 数据,即
foobar = FooBar.objects.get(...)
foobar_form = FooBarForm(request.post, instance=foobar)
这对于表单集来说是什么?到目前为止,我已经尝试了 Instance,Django 告诉我它不存在用于表单集,以及初始,我用它来填充 GET 请求中的表单集,
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()
我从调试器收到一个错误,说“Bar”列中的空值违反了非空约束。详细信息:失败行包含 ('foo_value', null)。
【问题讨论】: