Google App Engine ndb 按 StringProperty 的长度排序

Google App Engine ndb order by length of StringProperty

是否可以按字符串的长度对查询进行排序属性?我试过这个:

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

但它向我显示错误:TypeError: order() expects a 属性 or query Order;

您或许可以使用 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())