Еще раз, я собираюсь предложить еще одно решение :) Я использовал код Хамфри , так что это основано на этом.
Однако у меня возникли проблемы с полем ModelChoiceField. Все будет работать по первому запросу. Однако, если набор форм попытался добавить новый элемент и не прошел проверку, что-то пошло не так с «существующими» формами, где для параметра SELECTED было установлено значение по умолчанию «---------».
Во всяком случае, я не мог понять, как это исправить. Итак, вместо этого (и я думаю, что это на самом деле чище в форме), я сделал поля HiddenInputField (). Это просто означает, что вам нужно сделать немного больше работы с шаблоном.
Итак, для меня исправление было в том, чтобы упростить форму:
class ItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.id:
self.fields['sku'].widget=HiddenInput()
А затем в шаблоне вам потребуется выполнить ручное зацикливание набора форм .
Итак, в этом случае вы должны сделать что-то подобное в шаблоне:
<div>
{{ form.instance.sku }} <!-- This prints the value -->
{{ form }} <!-- Prints form normally, and makes the hidden input -->
</div>
Это сработало немного лучше для меня и с меньшими манипуляциями с формой.