【发布时间】:2016-09-20 15:00:41
【问题描述】:
在我的 django 应用程序中,用户可以通过 1) 将数据输入表单或 2) 复制现有 Document 来创建 Document 模型对象。在第二种情况下,我想使用 is_valid 来确认现有 Document 仍然有效(有效性规则自创建以来可能已更改)。我有这样的工作:
doc = original_doc.clone()
form = DocumentForm(data=doc.__dict__, instance = doc)
if form.is_valid():
# doc is valid
else:
... do stuff ...
现在我需要对内联表单集执行相同的操作。每个 Document 可以有 1 个或多个 Item,我使用内联 formset 进行跨字段验证,这取决于 Document 字段和 Item 字段。我有这个:
ItemFormSet = inlineformset_factory(Document,
Item, form=ItemForm, formset=CustomItemFormSet)
item_formset = ItemFormSet(data= XXX, instance = doc,
queryset=doc.item_set, doc_form=form)
if item_formset.is_valid():
# item_formset is valid
else:
... do stuff...
我的问题是:如何在 ItemFormSet 调用中获取数据参数 (XXX) 的值?当我向用户显示表单时,我可以使用 request.POST。没有它,我是否需要逐字段手动重建字典?由于表单集附加到字段名称的数据,它变得复杂,例如:'id_item_set-0-field_name'。
【问题讨论】:
标签: django forms validation inline-formset