我在获取 RelationList 以在小部件中显示我想要的内容时遇到了一些麻烦。我看到的行为对我没有意义: /mysite/folder1/foo - 新内容,我想在其中创建关系 /mysite/folder2/bar - 我想链接到的项目。
source=ObjPathSourceBinder(object_provides='foo.bar.IMyInterface')
无论界面如何,这似乎都会显示所有敏捷内容 - 尽管只有提供 IMyInterface 的内容是可选的。
source=ObjPathSourceBinder(navigation_tree_query={'object_provides':'foo.bar.IMyInterface'}))
我不明白为什么这会导致不同的行为,但会导致不显示任何内容。这似乎是查询路径的问题,因为这确实有效:
source=ObjPathSourceBinder(navigation_tree_query={'path':{'query':'/mysite/folder2'},'object_provides':'foo.bar.IMyInterface'}))
然而,这并不理想,因为它需要知道路径。我期望该行为仅显示文件夹内容和提供我的界面的内容,并且仅显示提供我的界面可选择的内容。那不可能吗?
我知道默认情况下不再支持关系 https://pypi.python.org/pypi/plone.app.dexterity#relation-support-no-longer-included-by-default(我正在使用 plone.app .dexterity 1.2.1 和 Plone 4.2)
或者,一个简单的选择小部件就可以了,但我无法让任何默认的 z3c.form 小部件与该字段正常工作(它们渲染得很好,但没有可选择的内容)。也许最好只使用一个常规的 z3c 模式列表和一个值为 UID 的词汇表,然后自己查找对象?