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)