Упорядочивание результата запроса по числовым строкам в django (postgres backend) - PullRequest
7 голосов
/ 20 января 2012

У меня есть таблица с полем имени (varchar), которое содержит только числовую строку, и я хочу упорядочить свои запросы по этому полю. Но имена полей упорядочены по алфавиту, но я хочу, чтобы они были упорядочены по номерам. Например, если я получаю 1 2 200 100 в качестве значений полей имени, он упорядочивается как 1 100 2 200 но мне нужно, чтобы они были 1 2 100 200.

Я мог бы предложить следующий запрос строки

select *
from my_table as t
where t.foo='bar'
order by cast(t.name as integer);

Но не можете представить это как наборы запросов django orm? есть ли способ сделать это?

1 Ответ

10 голосов
/ 20 января 2012

Прежде всего, я бы спросил, почему у вас есть столбец varchar, который должен рассматриваться как числовой, но неважно.

Вы можете использовать метод набора запросов extra для преобразования вашей строки:

MyTable.objects.extra(select={'int_name': 'CAST(t.name AS INTEGER)'},
                      order_by=['int_name'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...