У меня есть поведение ловкости, которое позволяет мне связывать предметы и сохранять отношения как UUIDs
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
, которая работает аналогичным образом, но сохраняет порядок добавления элементов? Еще лучше, есть ли виджет, который делает это, а также позволяет вам изменять порядок элементов?