2009-07-08 2 views
0

У меня есть эта строка кода в моих взглядов, что позволяет мне, чтобы отобразить группу элементов по дате (Я также изменил порядок таким образом самые последние дисплеи первого):Как я могу упорядочить результаты фильтра запросов?

currentlinks = Current.objects.order_by('date_added').reverse()[:5] 

работает отлично, но тем не менее , когда я сцепить order_by код с фильтром ...

currentsources = Current.objects.filter(source__exact='bbc').order_by('date_added') 

почему не это не работает? возможно, плохой синтаксис, или я просто не понимаю, как это должно работать?

+0

Что не работает? Синтаксис выглядит корректно. Означает ли она ошибку, создает ли она неправильные данные, вообще-то получается? –

+0

См. Мой обновленный ответ. –

ответ

1

Если нет Current объектов с source из "bbc", значит, вы получите пустой набор результатов. Это то, что вы подразумеваете под не работает? Если нет, отправьте результаты, которые вы получите.

Update: Еще одна вещь, чтобы попробовать: запустить

manage.py shell 

, а затем в оболочке, оценить QuerySet, который дает проблему.

currentsources = Current.objects.filter(source__exact='bbc').order_by('date_added') 

Затем сделайте следующее:

from django.db.import connection 
connection.queries 

и это покажет необработанный SQL, который выполняется для QuerySet. Это должно помочь дому в этом вопросе.

+0

hi Vinay, возвращает объекты, но они не упорядочены по дате. на самом деле, я не могу сказать, как они заказаны - кажется случайным (хотя, я уверен, что это не так). – 2009-07-08 15:27:20

+0

привет Винай и Даниэль. – 2009-07-08 15:28:46

+0

Так какой именно тип 'date_added' вашей модели' Current'? –

0

Одна вещь, которую я заметил в запросе: если вы пытаетесь изменить порядок таким образом, что более поздние сроки появляются первые, можно использовать следующий синтаксис:

currentlinks = Current.objects.order_by (» -date_added ')

Знак минус впереди на поле меняет порядок. Это соответствует примерно следующий синтаксис в SQL:

SELECT * FROM current_links ORDER BY DATE_ADDED DESC

В order_by() должен работать, если цепь его после фильтра(), при условии, что фильтр() справедливо ,

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