私のモデルに正しくマップされたフォームがあります。私がしたいのは、3つのSelectField
(日、月、年)を使用してユーザに生年月日を入力させ、それらの3つの値の組み合わせをmodel.dateOfBirth
に書き込ませることです。私は既存のDateField
とDateTimeField
オプションを知っていますが、いずれも適切ではありません。Flask-WTFormを使用して複数のWTFormフィールドを1つの属性にマップする
私はFormField
を使用して、これをしようとしましたが、私はもちろん、存在しないmodel.dateOfBirth.day
を設定しようとしていると仮定して、フォーム全体'str' object has no attribute 'day'
にpopulate_obj
を呼び出すとき、それは失敗します。
私はform.data
からすべての関連データを引き出し、populate_obj
の外でモデル化するために書くが、私は失敗からpopulate_obj
を停止するdateOfBirth
データを削除するように見えることはできませんすることができます。フォーム作成時にobj
を渡すときに、フォームデータをどのようにプレフィックスすることができるかについてはもちろん疑問がありますが、今のところそれを犠牲にしています。
私はFieldList
を使用して見てきましたが、ドキュメントは、それが戻って、リスト内のすべてのデータを与えることを言って、代わりに辞書の、まだ同じ問題に私に
フォーム
class DOBForm(Form):
day = SelectField(u'Please enter your date of birth',
choices=days,
validators=[InputRequired(message=u' ')]
)
month = SelectField(u' ',
choices=months,
validators=[InputRequired(message=u' ')]
)
year = SelectField(u' ',
choices=years,
validators=[InputRequired(message=u' ')]
)
を与えるであろう
と
class MainForm(Form):
dateOfBirth = FormField(DOBForm)
モデル
class Model
dateOfBirth = db.Column('dateOfBirth', Date)