【问题标题】:retain all data when editing using a django formset使用 django formset 编辑时保留所有数据
【发布时间】:2018-04-09 21:35:10
【问题描述】:

假设我有一个模型 FooBar 包含两个字段 FooBar。然后,如果我使用模型表单仅编辑现有记录的 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)。

【问题讨论】:

    标签: django formset


    【解决方案1】:
    猜你喜欢
    • 2020-12-07
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2019-10-16
    相关资源
    最近更新 更多