multicontenttreefieldwidgetのように機能するが、アイテムの順序を保持するように機能するploneフォームウィジェットを作成する方法
質問
私はアイテムを関連付けて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
リクエストパラメーターを処理するときにセットを使用します。おそらくこれは重複を防ぐためですが、2つの厄介な副作用があります。
- フィールドの値が変更されていないと更新されます
- それが重要であるかもしれない場合、注文は失われます
代替手段はありますか MultiContentTreeFieldWidget
それは同様の方法で機能しますが、アイテムを追加する注文を保持しますか?さらに良いことは、これを行うウィジェットがあり、またアイテムを並べ替えることもできますか?
解決
代替手段は見つかりませんでしたが、その後Z3C.FormWidget.Queryが更新され、リクエストパラメーターを処理する際にセットの代わりにリストを使用するように更新されました。バージョン0.7これを修正します
http://pypi.python.org/pypi/z3c.formwidget.query/0.7
BuildOutの[バージョン]セクションに以下を追加して解決します
z3c.formwidget.query = 0.7
所属していません StackOverflow