WTFormsでPythonの予約語をFieldとして扱いたい場合の対処法
こういうことをしたかった。
class MyForm(FlaskForm): from = DateField(format='%Y%m%d') to = DateField(format='%Y%m%d')
が、これは syntax error
になる。理由は from
がPythonの予約語であるため。
from
を辞書のkeyのstringとして扱えれば回避できるのでここは type
を使ってclassをメタ的に生成する。
MyForm = type('MyForm', (FlaskForm,), { 'from': DateField(format='%Y%m%d'), 'to': DateField(format='%Y%m%d'), })
値を取り出す際も dot アクセスするとsyntax errorになるので辞書として取得する。
f['from']
面倒なのでそもそもの form に予約語になりそうなフィールドを含めないようにしましょう。