gpt4 book ai didi

google-app-engine - 实体子项的 Google App Engine 查询(不是过滤器)

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:41 25 4
gpt4 key购买 nike

实体的子实体在查询中是否可用?

给定:

class Factory(db.Model):
""" Parent-kind """
name = db.StringProperty()

class Product(db.Model):
""" Child kind, use Product(parent=factory) to make """
@property
def factory(self):
return self.parent()
serial = db.IntegerProperty()

假设 500 家工厂生产了 500 种产品,总共生产了 250,000 种产品。有没有一种方法可以形成一个资源高效的查询,只返回一个特定工厂生产的 500 种产品?祖先方法是一个过滤器,所以使用例如Product.all().ancestor(factory_1) 需要重复调​​用数据存储。

最佳答案

虽然祖先被描述为“过滤器”,但它实际上只是更新查询以添加祖先条件。在迭代查询之前,您不会向数据存储区发送请求,因此您所拥有的将正常工作。

但有一个小问题:500 个具有相同父实体的实体可能会损害可伸缩性,因为写入是序列化到实体组的成员。如果您只想跟踪生产产品的工厂,请使用 ReferenceProperty:

class Product(db.Model):
factory = db.ReferenceProperty(Factory, collection_name="products")

然后您可以使用以下方法获取所有产品:

myFactory.products

关于google-app-engine - 实体子项的 Google App Engine 查询(不是过滤器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com