Bestellen Django -Objekte zufällig
-
19-09-2019 - |
Frage
Hier ist ein interessantes Problem, ich habe eine Liste von Benutzern, die ich in der Reihenfolge der Bewertung aufliste, und bei der zwei Benutzer die gleiche Bewertung haben, habe ich eine Zufallszahl, mit der ich sicherstellen kann, dass die Liste nicht immer gleich ist.
Derzeit mache ich dies, indem ich eine Abfrage ausführe:
select app_model1.column1, app_model1.colum2, app_model2.column3 from app_model1 left join app_model2 order by colum1, random();
Aber es fiel mir auf, als ich eine große Django -App in mehrere kleinere Geräte umgestaltete, die den Namen der Tabelle in diese SQL kodiert hatte (und es brach meine Einheitstests) und ich sollte das native Orm wirklich verwenden, um dies zu erreichen.
Wie kann ich das gleiche Ergebnis erzielen, aber stattdessen mit Django.contrib.auth.user und einem Profilmodell?
Lösung
Entsprechend die Dokumentation Sie können ein Special verwenden "? Feldname:
class Meta:
ordering = ('colum1', '?')