如何创建一个像MulticontenttreefieldWidget一样工作的Plone形式的小部件,但保留了项目的顺序

StackOverflow https://stackoverflow.com/questions/7807693

  •  26-10-2019
  •  | 
  •  

我有一种灵活性的行为,使我可以将项目联系起来并将关系存储为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 处理请求参数时使用集合。据推测,这是为了防止重复,但有两个讨厌的副作用:

  1. 字段值未更改时会更新
  2. 订单可能很重要

有其他选择吗 MultiContentTreeFieldWidget 它以类似的方式工作,但保留了您添加项目的顺序?更好的是有一个小部件可以做到这一点,还可以让您重新排序项目?

有帮助吗?

解决方案

我没有找到替代方案,但随后z3c.formwidget.query已更新以使用列表,而不是处理请求参数时的集合。版本0.7修复了此问题

http://pypi.python.org/pypi/z3c.formwidget.query/0.7

将以下内容添加到您的[版本]部分以解决的问题

z3c.formwidget.query = 0.7
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top