我可以使用的形式继承只有一些字段?验证错误



我有一个父窗体和两个子窗体,然后从它继承-

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'})

For Child1Form我需要number_a, number_b和number_c.

对于Child2Form,我需要number_b和number_d,但我不需要number_a,所以我不提交。这导致验证错误,当我张贴Child2Form,因为在ParentForm字段是必需的。

我该如何处理这个问题?基本上,在某些表单上,我需要验证number_a字段,而在其他表单上,我需要忽略它。但是我不想多次输入它,因为我可能会有非常多的表单。

希望我的观点被理解了,如果不是这样,请告诉我。

这听起来就像OOP中"拒绝继承"的设计问题。这是小孩子不该做的事。

你应该安排继承层次结构来满足子类的需要:

class ParentForm_B(FlaskForm):
number_b = ...
class ParentForm(ParentForm_B):
number_a = ...
class Child1Form(ParentForm):
number_c = ...
class Child2Form(ParentForm_B):
number_d = ...

相关内容

  • 没有找到相关文章

最新更新