我试图重新排序标准django表单字段的呈现。表单继承自基础表单并以此为基础。
与使用Meta
和fields
订购和指定模型表单字段的类似方法可以用于重新排序继承表单的字段,或者实现此目的的最佳方法是什么?
(例如:)
class SignupForm(allauthforms.SignupForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class Meta:
fields = ['email', 'password2']
答案 0 :(得分:3)
定义Meta
课程仅适用于ModelForm
,对常规Form
课程不起作用。
如果您使用的是Django 1.9或更高版本,则可以定义field_order属性
class SignupForm(allauthforms.SignupForm):
field_order = ['email', 'password2']
对于旧版本的Django,您必须更改fields属性。
class SignupForm(allauthforms.SignupForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields = OrderedDict([
('email', self.fields['email']),
('password2', self.fields['password2'])
])
或者,您可以按照模板中所需的顺序列出单个表单字段。
答案 1 :(得分:1)
渲染表单时,您可以使用Form.field_order。它自django 1.9起可用
您所要做的就是传递一个列表,其中包含有序的字段名称。