鉴于我有一个这样的通用形式:
from django import forms
class TimesForm(forms.Form):
hours = forms.DecimalField()
description = forms.CharField()
topic = forms.CharField()
我想用html渲染这个表单, 动态控制外观顺序的最佳方法是什么? 换句话说,用户应该能够控制这些输入字段在屏幕上显示的顺序。
虽然我能够遍历这样的字段:
{% for field in form %}
{{field}}
{% endfor %}
我没有找到控制输入字段外观顺序的正确方法。我该如何做到最好?
答案 0 :(得分:7)
来自the "Notes on field ordering" section of Django's forms API documentation:
还有其他几种自定义顺序的方法:
Form.field_order
默认情况下为
Form.field_order=None
,它保留您在表单类中定义字段的顺序。如果field_order
是字段名称列表,则按列表指定的顺序排序字段,并根据默认顺序追加其余字段。列表中的未知字段名称将被忽略。这样就可以通过将子类中的字段设置为None
来禁用它,而无需重新定义排序。您还可以使用
Form.field_order
Form
参数来覆盖字段顺序。如果Form
定义field_order
和,则在实例化field_order
时包含Form
,则后者field_order
将具有优先权。< / p>
Form.order_fields(field_order)
您可以随时使用
order_fields()
重新排列字段,并在field_order
中添加字段名称列表。