Commander des objets Django au hasard
-
19-09-2019 - |
Question
Voici un problème intéressant, j'ai une liste d'utilisateurs que j'énumère par ordre de notation, et lorsque deux utilisateurs ont la même note, j'ai un nombre aléatoire que j'utilise pour m'assurer que la liste ne sera pas toujours la même.
Actuellement, je le fais en exécutant une requête:
select app_model1.column1, app_model1.colum2, app_model2.column3 from app_model1 left join app_model2 order by colum1, random();
Mais cela m'a frappé tout en refactorisant une grande application Django en plusieurs plus petites que j'avais codé en dur le nom de la table dans ce SQL (et il a brisé mes tests unitaires) et je devrais vraiment utiliser l'ORM natif pour y parvenir.
Comment puis-je obtenir le même résultat, mais à l'aide de Django.Contrib.Auth.user de Django et un modèle de profil à la place?
La solution
Selon La documentation Vous pouvez utiliser un "?" nom de domaine:
class Meta:
ordering = ('colum1', '?')