私はGrokkedのPlone(4.2)フォームを持っています。特定のフィールドの動的ソースが必要です。スキーマの関連部分:
from plone.directives import form
from z3c.relationfield.schema import RelationList, RelationChoice
from five import grok
from plone.formwidget.contenttree import ObjPathSourceBinder
@grok.provider(ISourceContextBinder)
def availableAttachments(context)
return ObjPathSourceBinder()
class IEmailFormSchema(form.Schema):
attachments = RelationList(
title = _(u'Attachments'),
description = _(u'Select and upload attachments.'),
default = [],
value_type = RelationChoice(
title =_(u"attachment"),
default = [],
# source = ObjPathSourceBinder() # this works
source = availableAttachments), # should do the same, but doesn't
required = False
)
これはにつながります:
ValueError: Invalid clone vocabulary
私は、 ploneの器用さの開発者マニュアルに記載されているすべてのバリアントを試しました。source
デコレータを(上記を参照)の属性と組み合わせたメソッドRelationChoice
と、名前付きの語彙クラスはどちらも同じ結果になります。