So erstellen Sie ein Plone -Form -Widget, das wie MulticontentTreefieldWidget funktioniert, aber die Reihenfolge der Elemente bewahrt

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

  •  26-10-2019
  •  | 
  •  

Frage

Ich habe ein Geschicklichkeitsverhalten, das es mir ermöglicht, Gegenstände in Beziehung zu setzen und die Beziehungen als UUIDs zu speichern

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')

Dies funktioniert hervorragend, außer dass, wenn Sie ein paar Beziehungen haben, jedes Mal, wenn Sie das Element bearbeiten, ändert sich ihre Bestellung. Wir zeigen die zugehörigen Elemente in der rechten Spalte der Seite an (z. B. sehen Sie dies Artikel über Lebensmittel) und möchte die Bestellung kontrollieren, damit wir zuerst interessantere Teaser setzen können.

Debugging Es sieht wahrscheinlich aus, dass diese Neuordnung auf die Tatsache zurückzuführen ist z3c.formwidget.query.widget.QuerySourceRadioWidget.update Verwendet einen Satz bei Verarbeitungsanforderungsparametern. Vermutlich soll dies Duplikate verhindern, hat aber zwei böse Nebenwirkungen:

  1. Der Wert eines Feldes wird aktualisiert, wenn er sich nicht geändert hat
  2. Reihenfolge geht verloren, wenn es wichtig sein könnte

Gibt es eine Alternative zu MultiContentTreeFieldWidget Das funktioniert auf ähnliche Weise, bewahrt aber die Reihenfolge, in der Sie Elemente hinzufügen? Noch besser gibt es ein Widget, das dies tut und ermöglicht es Ihnen auch, Elemente neu zu ordnen?

War es hilfreich?

Lösung

Ich habe keine Alternative gefunden, aber anschließend wurde z3c.formwidget.Query aktualisiert, um eine Liste anstelle eines Satzes bei der Verarbeitung von Anforderungen zu verwenden. Version 0.7 behebt dies

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

Fügen Sie Folgendes zu Ihrem [Version] -Abschnitt in Buildout hinzu, um es zu lösen

z3c.formwidget.query = 0.7
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top