次のようなフォームがあります。
class AddProductForm(Form):
title = TextField('Title')
type = QuerySelectField('Type',
query_factory=lambda: ProductType.query.order_by(ProductType.sequence).all())
def __init__(self, formdata=None, obj=None, prefix='', **kwargs):
try:
product_type_id = ProductType.query.filter_by(name=obj['product_type']).one().product_type_id
kwargs.setdefault('type', product_type_id)
except NoResultFound:
pass
Form.__init__(self, formdata, obj, prefix, **kwargs)
ご覧のとおり、フォームが読み込まれたときに product_type に適切なデフォルトを与えるように設定しようとしています。ただし、この種のコードは、例としてタイトルを設定するために機能しましたが、QuerySelectField の「タイプ」では機能しません。これを修正する方法はありますか?
これが不可能であると仮定すると、フォーム要素をフォームに動的に追加する方法を知っている人はいますか?