2010-02-08 4 views
0

Вот интересная проблема: у меня есть список пользователей, которые я перечисляю в порядке рейтинга, и где у двух пользователей одинаковый рейтинг, у меня есть случайное число, которое я использую, чтобы убедиться, всегда будет одинаковым.Сортировать объекты Django случайно

В настоящее время я делаю это, выполнив запрос:

 select app_model1.column1, app_model1.colum2, app_model2.column3 
    from app_model1 left join app_model2 
    order by colum1, random();

Но он ударил меня в то время как рефакторинг большое приложение Django на несколько более мелких, которые я трудно закодированный имя таблицы, в этом SQL, (и он нарушил мои модульные тесты), и я должен действительно использовать собственный ORM для достижения этого.

Как получить тот же результат, но вместо этого использовать Django django.contrib.auth.User и модель профиля?

ответ

3

В соответствии с the documentation вы можете использовать специальный «?» Имя поля:

class Meta: 
     ordering = ('colum1', '?') 
+0

Я мог бы, но запрос выбирает из списка пользователей, но упорядочивает их по значению в модели профиля, порядок в этом примере применяется только к объекту, который вы применяете мету класса , Мне нужно попробовать и посмотреть, я думаю ... смотри это пространство. –

+0

Вы можете использовать '?' где бы вы ни заказывали в Django. 'Entry.objects.order_by ('?')' –

Смежные вопросы