我想保存字段在一個formset中的順序,但我想隱藏順序字段(即用戶不能編輯它)。保存在Django中的字段順序Modelformset
文檔here說我可以重寫add_fields方法來重新定義訂單字段的屬性。這裏是我重寫類:
class MyBaseFormSet(BaseInlineFormSet):
def add_fields(self, form, index):
super(MyBaseFormSet, self).add_fields(form, index)
form.fields['order'] = forms.HiddenInput()
而且從views.py:
MyFormSet = inlineformset_factory(ModelA,
ModelB,
formset = MyBaseFormSet,
can_order = True)
我的模板文件的相關部分:
{{ formset.management_form }}
<tr>
{% for form in formset %}
{% for hidden in form.hidden_fields %}{{ hidden }}{% endfor %}
<td>{% for visible in form.visible_fields %}{{ visible }}{% endfor %}</td>
</tr>
它呈現頁面時,提出了一個TemplateSyntaxError :Caught AttributeError while rendering: 'HiddenInput' object has no attribute 'label'
我懷疑我的重寫類是不正確的,但文檔沒有多大幫助。
使用該解決方案,我不得不改變[「秩序」]爲[「ORDER」]和它呈現在頁面上正確。但是,在我的form.cleaned_data中,ORDER是None。我如何從網頁中獲取實際的號碼? – 2012-03-11 18:35:31
更好,然後將''order''改成'forms.formsets.ORDERING_FIELD_NAME' – 2017-12-20 15:58:22