Deform を扱う開発者は、少数の基本的な型のオブジェクトとそれぞれの関係を 理解する必要があります。それらの型は次の通りです:
- スキーマノード
- フィールドオブジェクト
- ウィジェット
ウィジェット、フィールド、スキーマノード・オブジェクトの関係は以下の 通りです:
- スキーマは開発者によって作成されます。 それは
schema node
オブジェクトのコレクションです。
deform.Form
コンストラクタに root スキーマノードが渡された場合、 その結果はfield
オブジェクトになります。開発者によって再帰的に 定義されたスキーマの各ノードについて、対応するfield
が生成されます。
- 結果として生じるフィールド木構造の中のそれぞれのフィールドは、 デフォルトのウィジェット型を持っています。フィールドオブジェクトの
widget
属性が開発者によって直接セットされない場合、field.widget
が最初に要求されたときに、デフォルトウィジェット型の インスタンスを生成するためにプロパティが使用されます。各スキーマ型には 良識的なデフォルトが典型的に存在します; 良識的なデフォルトを見つける ことができない場合、deform.widget.TextInputWidget
ウィジェットが 使用されます。
Note
Colander ドキュメンテーション は Deform 開発者にとって有用なリソースです。特に schema
がどのように 生成され、使用されるかの詳しい説明があります。Deform スキーマは Colander スキーマです。それらがどのように働くかについての Colander ドキュメンテーションは、同様に Deform スキーマを作成する場合にも 当てはまります。
ウィジェットは複数の schema node
型オブジェクトと関係があります。 例えば、抽象的な "TextInputWidget" は、その型として colander.String
を持つスキーマノードと関連するテキストデータを テキスト入力コントロールにシリアライズさせることに責任を持つかもしれません。 その一方で、抽象的な "MappingWidget" は colander.Mapping
オブジェクトをコントロールのシーケンスにシリアライズさせることに責任を 持つかもしれません。両方の場合で、シリアライズされるデータ型は、 ウィジェットが関連付けられているスキーマノード型と関係があります。
ウィジェットは field
オブジェクトを通してスキーマノードと関係を 持っています。 field
オブジェクトはウィジェットと schema
node
の両方への参照を持っています。これらの関係を図にすると、このように なります:
フィールド・オブジェクト (``field``)
|
|
|----- ウィジェット・オブジェクト (``field.widget``)
|
|
\----- スキーマノード・オブジェクト (``field.schema``)