我可以只对某些字段使用表单继承吗?验证错误
Can I use Form inheritance for only some fields? Validation error
我有一个父表单和 2 个子表单,而不是从它继承 -
class ParentForm(FlaskForm):
number_a = StringField('A',
validators=[DataRequired()],
render_kw={"placeholder":"A", 'class_':'input', 'id':'number_a'})
number_b = StringField('B',
validators=[DataRequired()],
render_kw={"placeholder":"B", 'class_':'input', 'id':'number_b'})
class Child1Form(ParentForm):
number_c = StringField('C',
validators=[DataRequired()],
render_kw={"placeholder":"C", 'class_':'input', 'id':'number_c'})
class Child2Form(ParentForm):
number_d = StringField('D',
validators=[DataRequired()],
render_kw={"placeholder":"D", 'class_':'input', 'id':'number_d'})
对于 Child1Form,我需要 number_a、number_b 和 number_c。
对于Child2Form,我需要number_b和number_d,但是我不需要number_a,所以我没有提交。当我 post Child2Form 时,这会导致验证错误,因为在 ParentForm 字段中是必需的。
我该如何解决这个问题?基本上在某些表单上我需要验证 number_a 字段,在其他表单上我需要忽略它。但我不想多次输入,因为我可能会有大量的表格。
希望我明白我的意思,如果不是这样请告诉我。
这听起来像是“拒绝遗赠”的OOP设计问题。 child 不应该做的事情。
您应该安排继承层次以满足 child 类:
的需要
class ParentForm_B(FlaskForm):
number_b = ...
class ParentForm(ParentForm_B):
number_a = ...
class Child1Form(ParentForm):
number_c = ...
class Child2Form(ParentForm_B):
number_d = ...
我有一个父表单和 2 个子表单,而不是从它继承 -
class ParentForm(FlaskForm):
number_a = StringField('A',
validators=[DataRequired()],
render_kw={"placeholder":"A", 'class_':'input', 'id':'number_a'})
number_b = StringField('B',
validators=[DataRequired()],
render_kw={"placeholder":"B", 'class_':'input', 'id':'number_b'})
class Child1Form(ParentForm):
number_c = StringField('C',
validators=[DataRequired()],
render_kw={"placeholder":"C", 'class_':'input', 'id':'number_c'})
class Child2Form(ParentForm):
number_d = StringField('D',
validators=[DataRequired()],
render_kw={"placeholder":"D", 'class_':'input', 'id':'number_d'})
对于 Child1Form,我需要 number_a、number_b 和 number_c。
对于Child2Form,我需要number_b和number_d,但是我不需要number_a,所以我没有提交。当我 post Child2Form 时,这会导致验证错误,因为在 ParentForm 字段中是必需的。
我该如何解决这个问题?基本上在某些表单上我需要验证 number_a 字段,在其他表单上我需要忽略它。但我不想多次输入,因为我可能会有大量的表格。
希望我明白我的意思,如果不是这样请告诉我。
这听起来像是“拒绝遗赠”的OOP设计问题。 child 不应该做的事情。
您应该安排继承层次以满足 child 类:
的需要class ParentForm_B(FlaskForm):
number_b = ...
class ParentForm(ParentForm_B):
number_a = ...
class Child1Form(ParentForm):
number_c = ...
class Child2Form(ParentForm_B):
number_d = ...