1

亲爱的大家

我正在将我的一个数据存储实体从 db 升级到 ndb。order() 调用对我来说是个问题。由于前端将传输诸如“-created_at”或“title”之类的字符串以进行排序。以前我基本都是把这个值查询出来,如下图:

query.order("-created_at")

现在 ndb 不支持上述语法。是否有将 order("-created_at") 转换为 order(-MyModel.created_at) 的推荐方法?

非常感谢!

4

1 回答 1

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,以及在类级别定义的有效订单字典。这样所有的定义都在同一个地方。

于 2013-08-12T06:25:51.187 回答