In Django verwende ich ein Inline-Formular mit can_order = True
für ein Modell mit order_with_respect_to
set. Ich habe Drag & Drop am Frontend eingerichtet, was dazu führt, dass Djangos automatisch generierte ORDER-Formularfelder (die ich versteckt habe) sich entsprechend der neuen Reihenfolge ändern. Ich habe überprüft, dass ich die neue Bestellung korrekt auf dem Server anmelde, aber Django scheint sie zu ignorieren und speichert die Modelle in der ursprünglichen Reihenfolge. Die automatisch erstellten Felder _order
in der Datenbank ändern sich nie.
Wie kann ich Django dazu bringen, die Modelle mit der im Formularsatz angegebenen Reihenfolge zu speichern? Muss ich etwas anderes tun, als save()
auf dem Formset aufzurufen?
Ich hatte das gleiche Problem und dachte nach dem Durchstöbern der Django-Quelle, dass es etwas ist, das du selbst machen musst.
Meine ursprüngliche Implementierung sah ungefähr so aus:
%Vor%Wie Sie jedoch festgestellt haben, wird damit nicht der ORDER festgelegt. Also sieht meine Implementierung jetzt so aus:
%Vor%In meinem obigen Beispiel ist 'order_order' das Feld, das ich verwende, um die Reihenfolge meiner Modelle zu verfolgen.
Denken Sie auch daran, dass Sie das Attribut 'ordering' der Meta-Klasse Ihres Modells angeben müssen, damit beim erneuten Generieren des Formsets die Elemente in der richtigen Reihenfolge angezeigt werden.
%Vor%Tags und Links django django-forms jquery-ui-sortable