В моем приложении django пользователь может создать объект модели Document путем: 1) ввода данных в форму или 2) копирования существующего документа. Во втором случае я хочу использовать is_valid для подтверждения того, что существующий документ все еще действителен (правила действительности могут быть изменены с момента его создания). У меня это работает так:Использование проверки формы django для inlineformset без POST
doc = original_doc.clone()
form = DocumentForm(data=doc.__dict__, instance = doc)
if form.is_valid():
# doc is valid
else:
... do stuff ...
Теперь мне нужно сделать то же самое для inlineformset. Каждый документ может иметь один или несколько элементов, и я использую встроенный набор форм для проверки в кросс-поле, который зависит как от поля «Документ», так и от поля «Элемент». У меня есть это:
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...
Мой вопрос: как я могу получить значение параметра данных (XXX) в ItemFormSet называет? Когда я показываю форму пользователю, я могу использовать request.POST. Без этого мне нужно вручную восстановить поле словаря по полю? Это осложняется из-за данных, которые prepets добавляют к именам полей, например: 'id_item_set-0-field_name'.