django非模型形式 - 使用元到命令继承形式的字段

时间:2016-09-12 12:02:28

标签: django django-forms

我试图重新排序标准django表单字段的呈现。表单继承自基础表单并以此为基础。

与使用Metafields订购和指定模型表单字段的类似方法可以用于重新排序继承表单的字段,或者实现此目的的最佳方法是什么? (例如:)

class SignupForm(allauthforms.SignupForm):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    class Meta:
        fields = ['email', 'password2']

2 个答案:

答案 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起可用

您所要做的就是传递一个列表,其中包含有序的字段名称。