jens hat geschrieben:Also wenn ich dein Sourcecode richtig verstehe, willst du im Grunde eine sortierte Liste haben, ohne explizit ein "Positions"-Feld in deinem Model einzufügen, ja?
Richtig.
jens hat geschrieben:Wie kann man die Reihenfolge mit deinem Mixin im nachhinein ändern? einfach .position eine neue Zahl zuortnen?
``move_up()``, ``move_down()``. ``position`` direkt zu verändern ist eine unglaublisch schlechte Idee, weil jede Position nur einmal vorkommen draf. Dadurch entstehen Lücken und doppelte Positionen und das zu reparieren ist danach quasi unmöglich. N aich müsste ich wohl nich ein Property machen, aber soweit ich weiß, werden Properties nicht vererbt. Kann das jemand bestätigen/widerlegen?
jens hat geschrieben:Warum nicht explizit im Model sowas einfügen?
Weil ich dann, um Sortierfähigkeit nachzurüsten an zig Stellen Felder und Werte und Manager reinsetzen müsste. Und so muss ich einfach nur das Mix-In reinladen - fertig. Jetzt kann ich dreißig Models machen die alle eine Sortierung haben, indem ich dreißig mal das Mix-In reinlade. Und nur das. Ich muss keine weiteren Felder definieren, die ich dann beim 28 Model vergessen könnte. Das Mix-In kümmert sich darum, dass diese Felder exisiteren.
jens hat geschrieben:Ich habe das so bei PyLucid gemacht. Jede CMS-Seite hat eine Gewichtung von -10 bin +10. Die Seiten auf einer Ebene werden nach dieser Zahl sortiert.
Mit so einer Gewichtung kannst du nur 21 Positionen genau ausgeben. Stell dir vor, du hast vierzig seiten, die alle eine bestimmte Reihenfolge erfordern. Was dann?
jens hat geschrieben:Normalerweise bekommen alle Modelle einen ID-Primary-Key... Man könnte eigentlich .order_by("id") machen. (Wobei man dann natürlich die Reihenfolge nicht mehr im nachhinein ändern kann.)
Genau. Sinn? Ich könnte die Objekte auch nach Namen sortieren, aber das würde doch ebensowenig das sein, was ich eigentlich erreichen wollte.