Google App Engine ndb按StringProperty的长度排序

时间:2015-03-12 23:03:02

标签: python google-app-engine sql-order-by google-cloud-datastore app-engine-ndb

是否可以按StringProperty的长度订购查询?我试过这个:

User.query(User.facebook_id = fb_id).order(-len(str(User.name))).fetch(10) 

但它显示错误:TypeError:order()需要一个Property或query Order;

1 个答案:

答案 0 :(得分:1)

您可以使用Computed Property

name_len = ndb.ComputedProperty(lambda self: len(self.name))

然后使用它进行查询:

User.query(User.facebook_id = fb_id).order(-User.name_len).fetch(10)

如果这不起作用,那么您需要添加IntegerProperty并将其设置为字符串的长度(name_len = ndb.IntegerProperty()