Encomendar django objetos aleatoriamente
-
19-09-2019 - |
Pergunta
Aqui está um problema interessante, tenho uma lista de usuários que listo em ordem de classificação e, onde dois usuários têm a mesma classificação, tenho um número aleatório que uso para garantir que a lista nem sempre seja a mesma.
Atualmente faço isso executando uma consulta:
select app_model1.column1, app_model1.colum2, app_model2.column3 from app_model1 left join app_model2 order by colum1, random();
Mas isso me impressionou ao refatorar um grande aplicativo de django em vários menores que eu codificava o nome da tabela nesse SQL (e ele quebrou meus testes de unidade) e eu realmente deveria estar usando o ORM nativo para conseguir isso.
Como posso obter o mesmo resultado, mas usando o django django.contrib.auth.user e um modelo de perfil?
Solução
De acordo com a documentação Você pode usar um especial "?" Nome do campo:
class Meta:
ordering = ('colum1', '?')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow