我可以只对某些字段使用表单继承吗​​?验证错误

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 = ...