亲爱的大家
我正在将我的一个数据存储实体从 db 升级到 ndb。order() 调用对我来说是个问题。由于前端将传输诸如“-created_at”或“title”之类的字符串以进行排序。以前我基本都是把这个值查询出来,如下图:
query.order("-created_at")
现在 ndb 不支持上述语法。是否有将 order("-created_at") 转换为 order(-MyModel.created_at) 的推荐方法?
非常感谢!
亲爱的大家
我正在将我的一个数据存储实体从 db 升级到 ndb。order() 调用对我来说是个问题。由于前端将传输诸如“-created_at”或“title”之类的字符串以进行排序。以前我基本都是把这个值查询出来,如下图:
query.order("-created_at")
现在 ndb 不支持上述语法。是否有将 order("-created_at") 转换为 order(-MyModel.created_at) 的推荐方法?
非常感谢!
使用字典查找
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,以及在类级别定义的有效订单字典。这样所有的定义都在同一个地方。