AutoCompleteFieldのバリデート
CompoundFormFieldの派生クラスは、だいたい渡される値の型が異なるようです。
で、バリデートにも気を配る必要があり……
どうせなら、それ向けに用意されていれば良いのですが、都合の良いものが見当たりませんでした。
以下のようにスキーマを指定して、textにのみバリデートを適用するようにします。
@expose() @turbogears.error_handler(show_form_search_pc_by_id) @turbogears.validate(form=form_search_pc_by_id, validators={'pcid':validators.Schema(text=validators.NotEmpty()),}) def search_pc_by_id(self, pcid): pcid = pcid['text'] pcs = PC.select(PC.q.pcid == pcid) # 後略
AutoCompleteFieldにデフォルト値
他のコンポーネントは、Fieldに紐づけておいたname値と、セットしたいデフォルト値とを辞書で紐づけるだけだったのだが。
AutoCompleteFieldは、どうやら、内部的に更に辞書で紐づけて渡す必要があったらしい。
き、気付かないって……
以下、pcidというnameを持つFieldに、u'0003'という値を表示させる例。
templateについては、省略。
values = dict(pcid=dict(text=u'0003')) return dict(form=form_edit_pc, value=values)