plone.directives.form.Schema
デフォルトを割り当てるためのフォームヒントがいくつかある、Dexterityコンテンツタイプがあります。
@form.default_value(field=ITrial['start_on'])
def default_start_on(data):
return datetime.now()
デフォルトのいくつかはより複雑で、それ自体がDexterityタイプのインスタンスであるオブジェクトを返します。これらのオブジェクトは、さまざまなイベントによってトリガーされるメインタイプのセットアップに不可欠です。
現在、テスト中です。理想的には、次のようなものを使用できるようにしたいと思います。
item = createContentInContainer(folder, 'ctcc.model.trial', 'item')
つまり、コンストラクターに手動で渡さなくても、デフォルトがアイテムによって取得されるようにしたいと思います。
使用している場合はzope.schema
、FieldPropertyを使用してスキーマフィールドへのプロキシを設定できます。器用さ、またはフォーム作成を通じてオブジェクトをプッシュするための関数に相当するものはありますか?
解決策: Davidのオプション#1、インターセプトを使用することになりましたObjectCreatedEvent
。
@grok.subscribe(ITrial, IObjectCreatedEvent)
def create_trial(trial, event):
if getattr(trial, 'start_on', None) is None:
trial.start_on = default_start_on(None)
それでも、フォームの動作の一部を複製しているように感じますが、少なくとも、フォームのデフォルトを提供しているのと同じ関数を使用しています。