Ordnen einer Tabelle in Flask-Admin

Django, Flask, Bottle, WSGI, CGI…
Antworten
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Hi

Ich habe eine Tabelle in der Form ID, Name. Geordnet wird das in Flask-Admin natürlich aufgrund der ID.
Frage: Wenn ich ein neues Feld hinzufüge und einen Knopf zum Ordnen der Tabellenfelder hinzufügen möchte. Was wäre da das Vorgehen? Und muss da ein zusätzliches Integer-Feld her?
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich kenne Flask-Admin selber nicht, aber in einem der Online-Beispiele kann man die Spalten durch einen Klick auf den Spaltenkopf nach dieser Spalte sortieren.

Gruß, noisefloor
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Darum geht's nicht. Ich möchte die Anzeige beim User (wie die Datensätze in der SelectBox angezeigt werden) im Admin sortieren.
Benutzeravatar
noisefloor
User
Beiträge: 3857
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ok... aber dann verstehe ich zumindest dein Problem nicht. Also was genau das Problem eigentlich ist.

Gruß, noisefloor
BlackJack

Also ich habe es so verstanden das es eine Tabelle gibt wo eine zusätzliche Spalte rein soll in der man im Admin-Bereich Werte reinschreibt die dann die Sortierreihenfolge angeben in der das für den normalen Benutzer dann angezeigt wird. Beispielsweise in einer Dropdown-Box. Also zum Beispiel OK, WARNING, CRITICAL, KABOOM in *dieser* Reihenfolge und nicht alphabetisch, zufällig, oder nach der Datensatz-ID.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Inwieweit löst den column_sortable_list und column_default_sort das Problem nicht?
BlackJack

Das Hauptproblem das ich sehe ist das es ohne spezielle Unterstützung ziemlich unhandlich ist weil man für die Sortierwerte vorgaben von Hand machen muss und wie früher bei BASIC-Zeilennummern immer schön Platz zwischen den Werten lassen muss um später noch etwas dazwischen einfügen zu können. Und wenn der mal zu gleich gewählt wurde muss man umnummerieren. Was von Hand auch sehr unschön ist.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Ich schätze mal, ein Bild sagt mehr als tausend Worte:

Bild

Also, ich möchte nun die Reihenfolge der Reihen nach unten und nach oben verschieben können (natürlich mit Auswirkung aufs Frontend). Eigentlich eine Grundanforderung für ein Admin sollte man meinen (insofern bin ich etwas überrascht, dass das fehlt). Oft wird das mit zwei kleinen Pfeil Icons angedeutet. Dazu wäre es auch noch schön einen Button zu haben um an beliebiger Stelle einen Datensatz einzufügen. Verständlich? Die erste Spalte ist übrigens via Fremdschlüssel automatisch aufgeführt. Geordnet wird am Admin aufgrund der Zweiten (das angezeigte Model im Admin bezieht sich auf die Unterklassen: z.B. Boot Hallenplatz).
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Es gibt keine Reihenfolge. Dementsprechend macht es auch keinen Sinn irgendwas verschieben zu können oder an beliebiger Stelle Datensätze einfügen zu können.
BlackJack

@meego: Das mit der Grundanforderung ist so eine Sache: Das ist etwas was nicht trivial ist weil Datensätze in einer Datenbank nicht einfach so eine Reihenfolge haben die man ändern könnte, also kann ein Admin-Frontend das auch nicht einfach so als Funktionalität anbieten ohne zusätzliche Daten in der Datenbank und zusätzliche Logik im Admin-Frondend. *Wie* man die Reihenfolge festlegbar macht kommt mit zusätzlichen Fragen daher: zusätzliche Spalte, zusätzliche Tabelle, ganzzahliger Datentyp oder Dezimalbruch, wie werden die Werte gewählt, was soll/muss passieren wenn es keinen ”Platz” mehr zwischen zwei ”Ordnungswerten” gibt, der Benutzer aber etwas dazwischen einfügen möchte, und so weiter.

Es gibt eben auch viele die als Grundanforderung an ein Admin-Frontend haben, dass das eine vorhandene Datenbank beziehungsweise einen vorhandenen Entwurf verwenden kann ohne darin Änderungen oder Ergänzungen vorzunehmen.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

Die Reihenfolge im Admin ist anscheinend der Primärschlüssel. Den könnte man doch austauschen? Reihen eine Stelle nach hinten verschieben sollte auch gehen?
BlackJack

@meego: Was meinst Du mit austauschen? Und wie sollte das verschieben denn konkret gehen? Was soll da konkret passieren wenn Du einen Eintrag mitten drin nimmst und den eine Position nach oben verschiebst? Welche Daten in welcher Tabelle sollen daraufhin nach welchem Algorithmus verändert werden? Mach mal ein konkretes Beispiel mit Werten für vor dem Verschieben und nach dem Verschieben.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

@Blackjack: Wenn Boot Hallenplatz ID 1 hat und Boot Stegplatz ID 2 hätte, wenn man Boot Stegplatz nach oben verschiebt, Boot Stegplatz ID 1 und Boot Hallenplatz ID 2. Das Beispiel bezieht sich auf den Screenshot meiner Unterklassentabelle.
BlackJack

@meego: Welche ID? Du willst den Primärschlüsselwert ändern? Dann ändert sich doch auch alles was sich auf diesen Primärschlüssel bezieht, so ein Primärschlüssel gehört eindeutig und unveränderbar zu einem Datensatz, denn über diesen Primärschlüssel stellt man doch die Verbindungen aus anderen Tabellen zu den Datensätzen her. Du bräuchtest schon eine zusätzliche Spalte wo Werte drin stehen welche die Reihenfolge festlegen. Oder eine zusätzliche Tabelle.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

@blackjack: Bei mir steht in den Sätzen nur der Fremdschlüssel der Gattungen. Okay, es ist vielleicht noch ein simples Modell. Wie das mit der zusätzlichen Tabelle geht verstehe ich nicht.

Ich nehme dann mal an, Flask_Admin bietet keine Unterstützung für so eine Sortierungsspalte (d.h. die Daten werden erstmal gleich angezeigt)?
BlackJack

@meego: Was sind denn Gattungen? Du musst bei der Beschreibung davon ausgehen das wir nichts weiter wissen als das was Du hier sagst.

Statt einer zusätzlichen Spalte für die Gewichtung könnte man auch eine zusätzliche Tabelle anlegen welche die Gewichtung enthält.
Sirius3
User
Beiträge: 17757
Registriert: Sonntag 21. Oktober 2012, 17:20

@meego: Wenn Du in Deiner Tabelle keine Spalte hast, die die Reihenfolge irgendwie repräsentiert, wie soll dann Flask_Admin eine unterstützen? Eine zusätzliche Tabelle würde man z.B. verwenden, wenn die ursprüngliche Tabelle aus welchen Gründen auch immer nicht verändert werden kann, man aber trotzdem die Reihenfolge der Elemente speichern will.
meego
User
Beiträge: 380
Registriert: Montag 4. März 2013, 14:36

@Sirius: Gemeint war, wenn ich eine solche Ordnungsspalte integriere. Ich denke es ist kein Problem, die ursprüngliche Tabelle in meinem Fall zu verändern.

@Blackjack: Die Gattungen in meinem Bild sind die Parkplätze (separate Tabelle), die Arten oder die Subklasse z.B. Aussenparkplatz Moto (die im Beispiel angezeigte eigene Tabelle).
Antworten