我们可以用表单继承的方法,减少代码冗余。
class TestForm(forms.Form):
name = forms.CharField(max_length=6)
age = forms.IntegerField()
# 继承了 TestForm
class TestForm2(TestForm):
sex = forms.CharField(required=False)
现在 TestForm2 拥有继承的来的 name、age 字段,和自身的 sex 字段。我们在 shell 里看看:
f = TestForm2()
print(f.as_ul())
>>> <li><label for="id_name">Name:</label> <input id="id_name" maxlength="6" name="name" type="text" required /></li>
<li><label for="id_age">Age:</label> <input id="id_age" name="age" type="number"required /></li>
<li><label for="id_sex">Sex:</label> <input id="id_sex" name="sex" type="text" /></li>
在子类中,可以通过设置值为 None 来删除从父类中继承的字段。例如:
class TestForm(forms.Form):
name = forms.CharField(max_length=6)
age = forms.IntegerField()
# 继承了 TestForm
class TestForm2(TestForm):
age = None
sex = forms.CharField(required=False)
我们在 shell 里看看:
f = TestForm2()
print(f.as_ul())
>>> <li><label for="id_name">Name:</label> <input id="id_name" maxlength="6" name="name" type="text" required /></li>
<li><label for="id_sex">Sex:</label> <input id="id_sex" name="sex" type="text" /></li>