3

アイテムを関連付け、その関係を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リクエストパラメータを処理するときにセットを使用するという事実に起因している可能性があります。おそらくこれは重複を防ぐためですが、2つの厄介な副作用があります。

  1. フィールドの値は、変更されていないときに更新されます
  2. 重要な場合は順序が失われます

MultiContentTreeFieldWidget同様に機能するが、アイテムを追加する順序を保持する代替手段はありますか?さらに良いのは、これを実行し、アイテムを並べ替えることもできるウィジェットがありますか?

4

1 に答える 1

2

代替手段が見つかりませんでしたが、その後z3c.formwidget.queryが更新され、リクエストパラメーターの処理時にセットではなくリストが使用されるようになりました。バージョン0.7はこれを修正します

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

ビルドアウトの[バージョン]セクションに以下を追加して解決します

z3c.formwidget.query = 0.7
于 2011-11-08T10:13:49.287 に答える