我有一个灵巧的行为,允许我关联项目并将关系存储为UUID
relatedItems = schema.List(
title=u"Related Items",
description=u"Search for content that is related to this item",
required=False,
value_type=schema.Choice(
source=UUIDSourceBinder(navigation_tree_query={'portal_type':
TYPES_WITH_TEASERS})))
form.widget(relatedItems='plone.formwidget.contenttree.widget.MultiContentTreeFieldWidget')
这很有效,除非你有一些关系,那么每次编辑项目时他们的订单都会改变。我们在页面的右侧栏中显示相关项目(例如,请参阅此article about food),并希望控制订单,以便我们可以先放置更多有趣的预告片。
调试它看起来可能重新排序是因为z3c.formwidget.query.widget.QuerySourceRadioWidget.update
在处理请求参数时使用了一个集合。据推测,这是为了防止重复,但有两个令人讨厌的副作用:
是否有替代MultiContentTreeFieldWidget
以类似方式工作但保留添加项目的顺序?更好的是有一个小部件可以做到这一点,也允许你重新排序项目?
答案 0 :(得分:2)
我没有找到替代方案,但随后z3c.formwidget.query已更新为在处理请求参数时使用列表而不是集合。版本0.7修复了这个
http://pypi.python.org/pypi/z3c.formwidget.query/0.7
将以下内容添加到buildout中的[versions]部分以解决
z3c.formwidget.query = 0.7