2015-10-02 2 views
0

У меня были некоторые вещи на моем сайте, которые отображались в другом порядке в зависимости от того, что было в последний раз отредактировано в db.В каком порядке Django (с postgres) возвращает db-запросы?

Я подтвердил, что в оболочке, порядок то, что было возвращено для

>>>foo.objects.all() 

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

+2

Из [postgres docs] (http://www.postgresql.org/docs/8.1/static/queries-order.html): _ Если сортировка не выбрана, строки будут возвращены в неуказанном порядке. Фактический порядок в этом случае будет зависеть от типов сканирования и объединения и порядка на диске, но на него нельзя полагаться. – solarissmoke

ответ

2

Если вы хотите установить порядок по умолчанию, используйте ordering meta field

class Foo(models.Model): 
    # ... 
    class Meta: 
    ordering = ['some_field', '-another_field'] 

Если вы не укажете это, порядок зависит от используемой системы хранения. Посмотрите на this ответ и comment by solarissmoke на ваш вопрос.

Вы можете позже переопределить это, используя метод order_by набора запросов, если это необходимо.

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