(у меня есть django 1.1.2 и postgresql в качестве среды разработки.)
У меня есть два запроса:
tables = Table.objects.filter(is_active = True,
finishes_at__lt=datetime.datetime.now()
).order_by("-starts_at", "weight")[:20]
а другой
tables = Table.objects.filter(is_active = True,
finishes_at__lt=datetime.datetime.now()
).order_by("-starts_at", "weight")
Оба эти запроса одинаковы, за исключением того, что первый из них имеет [:20]
(LIMIT 20) в конце.
Но когда я запускаю оба этих запроса. Я видел, что наборы результатов имеют разные порядки. Есть ли способ исправить это?
Примечание:
Я запускаю запросы в dbshell и вижу, что запросы на самом деле дают результаты в другом порядке. вот запросы, сгенерированные django
SELECT "table_table"."id" FROM "table_table"
WHERE ("table_table"."is_active" = True
AND "table_table"."finishes_at" < '2010-11-09 11:57:48.482720' )
ORDER BY "table_table"."starts_at" DESC, "table_table"."weight" ASC
, а тот, который ограничен -
SELECT "table_table"."id" FROM "table_table"
WHERE ("table_table"."is_active" = True
AND "table_table"."finishes_at" < '2010-11-09 11:57:48.482720' )
ORDER BY "table_table"."starts_at" DESC, "table_table"."weight" ASC LIMIT 20