Python Wtforms:添加具有多重继承的动态字段

Python Wtforms:添加具有多重继承的动态字段,python,forms,wtforms,Python,Forms,Wtforms,我知道我可以创建如下动态字段: 但是在我的例子中,上面的解决方案是笨拙的,并且需要一个我想要避免的特殊API。我想知道是否有一种方法可以让它与多重继承一起工作?我尝试了以下方法,但无效,我不知道为什么,我认为WTForms应该根据类结构的工作方式正确绑定表单: >>> class Base(Form): ... def __init__(self, **kwargs): ... setattr(self, 'dynamic_boolean', field

我知道我可以创建如下动态字段:

但是在我的例子中,上面的解决方案是笨拙的,并且需要一个我想要避免的特殊API。我想知道是否有一种方法可以让它与多重继承一起工作?我尝试了以下方法,但无效,我不知道为什么,我认为WTForms应该根据类结构的工作方式正确绑定表单:

>>> class Base(Form):
...     def __init__(self, **kwargs):
...         setattr(self, 'dynamic_boolean', fields.BooleanField('label'))
...         super(Base, self).__init__(**kwargs)
... 
>>> class Inherit(Base):
...     other_boolean = fields.BooleanField('label')
... 
>>> 
>>> form = Inherit()
>>> form.__dict__
{'dynamic_boolean': <UnboundField(BooleanField, ('label',), {})>, 'other_boolean': <wtforms.fields.core.BooleanField object at 0x8a8510c>, '_fields': {'other_boolean': <wtforms.fields.core.BooleanField object at 0x8a8510c>}, '_prefix': '', '_errors': None}
>>类基(形式):
...     定义初始(自我,**kwargs):
...         setattr(self,'dynamic_boolean',fields.BooleanField('label'))
...         超级(基,自).\uuuu初始值(**kwargs)
... 
>>>类继承(基):
...     other_boolean=fields.BooleanField('label'))
... 
>>> 
>>>form=Inherit()
>>>表格__
{'dynamic_boolean':,'other_boolean':,'u fields':{'other_boolean':},'u prefix':'','u errors':None}
如您所见,动态布尔值未绑定。如何设置此设置以正确绑定动态布尔字段?

WTForms用于在实例化时处理绑定。这个元类在
窗体之前完成它的工作。调用\uuuuu init\uuuu
,从而使得
\uuuuuuu init\uuu
中的某些内容无法创建绑定的字段

WTForms的设计方式是为了减少搜索和查找字段类的工作量,使其仅在表单第一次实例化时发生,从而在初始请求后加快应用程序的速度



或者如果您愿意进行腿部工作,可以基于并使用您自己的元类设计类似于表单的东西来支持此行为。请注意,BaseForm与Form不是一回事,它纯粹是为补充库的作者设计的一种低级方式,用于访问构建类似工具。

您的主题似乎与您的问题不符。WTForms确实支持多重继承,但这与您尝试执行的操作无关,这类似于动态组合。添加一个返回新表单的classmethod也可以。也许给某人指出了正确的方向。有人参与了腿部工作并愿意与他人分享吗?