Как создать виджет формы Plone, который работает как MulticontentTreefieldWidget, но сохраняет порядок элементов

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

  •  26-10-2019
  •  | 
  •  

Вопрос

У меня есть поведение ловкости, которое позволяет мне связывать предметы и хранить отношения как 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 использует набор при обработке параметров запроса. Предположительно это предотвратить дубликаты, но имеет два неприятных побочных эффекта:

  1. Значение поля обновляется, когда оно не изменилось
  2. Порядок потерян, когда это может быть важно

Есть альтернатива MultiContentTreeFieldWidget Это работает аналогичным образом, но сохраняет заказ, который вы добавляете элементы? Еще лучше есть ли виджет, который делает это, а также позволяет переупорядочить элементы?

Это было полезно?

Решение

Я не нашел альтернативу, но впоследствии Z3C.FormWidget.Query был обновлен, чтобы использовать список вместо набора при обработке параметров запроса. Версия 0.7 исправляет это

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

Добавьте следующее в раздел [версии] в Buildout, чтобы разрешить

z3c.formwidget.query = 0.7
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top