NDB SortBy没有ComputedProperty的结果

时间:2016-08-23 09:31:36

标签: python-2.7 google-app-engine google-cloud-datastore app-engine-ndb gcloud

我不是100%肯定这一点,但在我的意见中,当sortBy使用ComputedProperty时,NDB查询会出现问题。 在我的示例中,按name排序的工作没有预期,而numberOfProducts排序不会返回任何条目。但是,如果按name排序,则会返回numberOfProducts的正确值,这意味着模型本身和数据库都可以。

我的模特:

class Brand(ndb.Model):
    name = ndb.StringProperty()
    products = ndb.ComputedProperty(lambda self: Product.query(Product.brand==self.key).fetch(keys_only=True))
    numberOfProducts = ndb.ComputedProperty(lambda self: len(self.products))

我的查询:

sortBy = Brand._properties[args['sortBy']]
query = query.order(-sortBy if args['asc'] == '0' else +sortBy)
entities, cursor, more = query.fetch_page(20, start_cursor=Cursor(urlsafe=args['cursor']))

非常感谢您的任何思考。

1 个答案:

答案 0 :(得分:0)

好的,我发现了这个问题,即使我不知道为什么会导致这种意外行为。 基本上我的computedProperty $array[] = $row['model'] . " " . $row['quantity']; echo json_encode($array);会导致问题:

products

此查询返回products = ndb.ComputedProperty(lambda self: Product.query(Product.brand==self.key).fetch(keys_only=True)) 个键,因此该属性需要设置list参数。有没有人知道为什么这个错误会导致我的错误?