Django如何知道呈现表单字段的顺序?

如果我有Django表单,例如:

class ContactForm(forms.Form):

subject = forms.CharField(max_length=100)

message = forms.CharField()

sender = forms.EmailField()

我调用了这种形式的实例的as_table()方法,Django将按照上述指定的顺序渲染字段。

我的问题是Django如何知道类变量的定义顺序?

(例如,当我想从类的init方法中添加字段时,如何覆盖此顺序?)

回答:

我继续回答了自己的问题。这是供将来参考的答案:

Django form.py中,使用该__new__方法将类变量最终self.fields按类中定义的顺序加载到其中,这确实有些不可思议。 self.fieldsDjango SortedDict实例(在中定义datastructures.py)。

因此,要覆盖此内容,请在我的示例中说,你希望发送者优先,但需要在init方法中添加它,你可以这样做:

class ContactForm(forms.Form):

subject = forms.CharField(max_length=100)

message = forms.CharField()

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

forms.Form.__init__(self,*args,**kwargs)

#first argument, index is the position of the field you want it to come before

self.fields.insert(0,'sender',forms.EmailField(initial=str(time.time())))

以上是 Django如何知道呈现表单字段的顺序? 的全部内容, 来源链接: utcz.com/qa/423977.html

回到顶部