Neuordnen von Einträgen in einem Modell mithilfe von Ziehen und Ablegen

8

Angenommen, ich habe eine Blog-App in Django. Wie kann ich die Posts mit einer ziehbaren Tabelle im Standard-Admin neu anordnen?

Es wäre am besten, wenn ich dem Modell keine zusätzlichen Felder hinzufügen müsste, aber wenn ich es wirklich kann.

    
Josh Hunt 21.09.2008, 11:05
quelle

6 Antworten

6

Für Arbeitscode, um dies zu tun, finden Sie Schnipsel 1053 unter djangosnippets.org .

    
Carl Meyer 21.09.2008, 13:59
quelle
4

Hinweis zum "Es wäre am besten, wenn ich dem Modell keine zusätzlichen Felder hinzufügen müsste, aber wenn ich es wirklich kann."

Entschuldigung, aber die Reihenfolge der Informationen in einer Datenbank wird durch die Information selbst bestimmt: Sie müssen immer eine Spalte für die Bestellung hinzufügen. Da gibt es wirklich keine Wahl.

Um Dinge in dieser Reihenfolge abzurufen, müssen Sie außerdem .order_by(x) zu Ihren Abfragen hinzufügen oder ordering zu Ihrem Modell hinzufügen.

%Vor%

Ohne das zusätzliche Feld kann die Reihenfolge nicht passieren. Es ist eine der Regeln relationaler Datenbanken.

    
S.Lott 21.09.2008 11:49
quelle
3

Heutzutage gibt es ein nettes Paket zum Bestellen von Admin-Objekten

Ссылка

Auch django-suit hat dafür eine Unterstützung eingebaut

    
Hedde van der Heide 02.05.2013 08:13
quelle
1

In der Modellklasse müssten Sie wahrscheinlich das Feld "order" hinzufügen, um eine bestimmte Reihenfolge zu erhalten (zB Artikel mit der Reihenfolge = 10 ist der letzte und Auftrag = 1 ist der erste). Dann können Sie einen JS-Code in der Admin-Tabelle change_list hinzufügen (siehe dies ), um die Drag & amp; Drop-Funktion beizubehalten. Ändern Sie schließlich die Reihenfolge in Meta des Modells zu etwas wie ['order'].

    
Dmitry Shevchenko 21.09.2008 11:15
quelle
1

Sie können dieses Snippet versuchen Ссылка (ursprünglich basierend auf diesem Snippet Ссылка ).

Die Integration ist sehr einfach.

Ihr Modell (in models.py):

%Vor%

Sie admin (admin.py):

%Vor%

Ändern Sie das JS (des Snippets) entsprechend, wenn Ihre Attribute, die für den Namen und die Reihenfolge verantwortlich sind, in Ihrem Modell anders benannt sind.

    
Artur Barseghyan 28.07.2014 12:47
quelle
0

Die Reihenfolge kann nur bestimmt werden, wenn Sie ein Feld in Ihrem Modell hinzufügen. Fügen Sie ein Positionsfeld in Ihrem Modell hinzu.

%Vor%

ordering = ('position',) in Meta ordnet das MainModel entsprechend dem Wert im Positionsfeld an. sortable_field_name = "position" hilft beim automatischen Ausfüllen des Werts in Position, wenn ein Benutzer die mehreren Modelle per Drag & Drop bewegt.

Um die gleiche Reihenfolge in Ihrer API zu sehen, verwenden Sie order_by (x) in views_model.py. Nur ein Modellbeispiel:

%Vor%     
Basant Kumar 08.06.2017 06:56
quelle

Tags und Links