Sqlalchemy сортирует данные на основе определенного значения (имени) и других в порядке возрастания - PullRequest
0 голосов
/ 10 октября 2019

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

Вот код, который у меня естьпробовал, применяя case.

db_session.query(ListModel)
.order_by(
    case([(ListModel.name == "OHIO", 1)]),
     ListModel.name.asc()
)

1 Ответ

0 голосов
/ 10 октября 2019

Я думаю, что это более стандартный способ сделать это. Вместо того, чтобы пытаться сортировать name и 1 одновременно, вы присваиваете каждой строке 1 или 0, если это Огайо или нет, и сначала сортируете по этому, затем вы сортируете по имени. Порядок должен быть ASC по умолчанию, как указано в комментариях.

db.query(ListModel).order_by(
    case([(ListModel.name=='OHIO', 0)], else_=1), 
    ListModel.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...