如何创建一个像MulticontenttreefieldWidget一样工作的Plone形式的小部件,但保留了项目的顺序
题
我有一种灵活性的行为,使我可以将项目联系起来并将关系存储为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')
这很好,除非您有一些关系,否则每次编辑项目的订单会更改。我们正在页面的右手列中显示相关项目(例如,请参阅此信息 关于食物的文章)并希望控制订单,以便我们可以将更多有趣的预告片放在首位。
调试看起来这种重新排序可能取决于事实 z3c.formwidget.query.widget.QuerySourceRadioWidget.update
处理请求参数时使用集合。据推测,这是为了防止重复,但有两个讨厌的副作用:
- 字段值未更改时会更新
- 订单可能很重要
有其他选择吗 MultiContentTreeFieldWidget
它以类似的方式工作,但保留了您添加项目的顺序?更好的是有一个小部件可以做到这一点,还可以让您重新排序项目?
解决方案
我没有找到替代方案,但随后z3c.formwidget.query已更新以使用列表,而不是处理请求参数时的集合。版本0.7修复了此问题
http://pypi.python.org/pypi/z3c.formwidget.query/0.7
将以下内容添加到您的[版本]部分以解决的问题
z3c.formwidget.query = 0.7
不隶属于 StackOverflow