我有点难以理解 python __init__
( ) 函数的工作原理。我想要做的是在 django 中创建一个新表单,并使用 uni_form 助手使用字段集以自定义方式显示表单,但是我将一个参数传递给应该稍微改变表单布局的表单而且我不知道如何使这项工作。这是我的代码:
class MyForm(forms.Form):
name = forms.CharField(label=_("Your name"), max_length=100, widget=forms.TextInput())
city = forms.CharField(label=_("Your city"), max_length=100, widget=forms.TextInput())
postal_code = forms.CharField(label=_("Postal code"), max_length=7, widget=forms.TextInput(), required=False)
def __init__(self, city, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
if city == "Vancouver":
self.canada = True
if self.canada:
# create an extra uni_form fieldset that shows the postal code field
else:
# create the form without the postal code field
但是,这对我不起作用的原因。self.canada 似乎在 之外没有任何值__init__
,因此即使我将该参数传递给函数,我也无法在我的类中使用该值。我找到了一个解决方法,即使用 self.fields 完全在内部创建表单__init__
,但这很难看。我如何在之外使用 self.canada __init__
?