簡體   English   中英

django非模型形式-使用meta對繼承形式的字段進行排序

[英]django non model form - use of meta to order fields of inherited form

我試圖重新排序標准django表單的字段的呈現。 該表單繼承自基本表單,並以此為基礎。

類似於使用Metafields對模型表單的fields進行排序和指定的類似方法,可以將其用於對繼承表單的字段進行重新排序,或者什么是實現此目的的最佳方法? (例如:

class SignupForm(allauthforms.SignupForm):

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

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

定義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'])
        ])

或者,您可以只按所需順序在模板中列出各個表單字段。

呈現表單時,可以使用Form.field_order。 自Django 1.9起可用

您要做的就是傳遞一個列表,其中包含有序的字段名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM