2013-08-12 2 views
1

дорогой всеAppengine - Обновление БД в ОПРС - Заказать

Я перехожу один из моих хранилища данных сущностей из БД в НБД. Звонок order() является для меня проблемой. Поскольку интерфейс будет передавать строку, такую ​​как «-created_at» или «title» для заказа. В прошлом, я в основном положить это значение для запроса, как показано ниже:

query.order("-created_at") 

Теперь NDB не поддерживает выше синтаксис. Есть ли рекомендуемый подход для перевода порядка («- created_at») на заказ (-MyModel.created_at)?

Большое спасибо!

+0

Что вы ищете? Вы перевели синтаксис. –

+0

Привет, @TimHoffman, Я ищу метод для перевода входной строки «-created_at» в -MyModel.created_at. Поскольку входная строка поступает из интерфейса, я не могу перевести ее самостоятельно. В настоящее время я думаю о структуре коммутационного корпуса, но это уродливо. Благодаря! –

+0

Чтобы быть более точным, я ищу функцию translate_order (query, order_str), которая модифицирует запрос, навязывая ограничения порядка, указанные в order_str. –

ответ

0

Используйте поиск по словарю

sort_orders = { 
    "-created_at": -MyModel.created_at, 
    "some_other_order": SomeModel.some_property 

} 

def get_order(input): 
    return sort_orders.get(input) 

Таким образом, вы только принять действительный/предопределенный набор возможных порядков.

Унарный оператор - работает в словаре.

например.

s~lightning-catfish> -Series.updatedDate 
PropertyOrder(<updatedDate>, DESCENDING) 

Я бы лично сделать функцию/метод а class_method модели, и словарь действительных заказов, определенных на уровне класса. Таким образом, все определения находятся в одном и том же месте.