3
我有一個Plone(4.2)形式是grokked。我想有一個特定領域的動態來源。該方案的相關部分:Plone敏捷的動態源RelationList
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 dexterity developer manual描述每一個變種。裝飾器結合RelationChoice
(參見上文)的source
屬性和命名詞彙類的方法都具有相同的結果。