エンティティの子供のためのGoogle App Engineのクエリ(フィルタリングしません)

StackOverflow https://stackoverflow.com/questions/528650

質問

クエリで利用可能なエンティティの子である

が与えられます:

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の工場250,000製品の合計500の製品を作っていると仮定します。ある特定の工場で作られただけで500の製品を返しますリソース効率の高いクエリを形成する方法はありますか?祖先方法ので、例えば使用し、フィルタでありますProduct.all()。祖先(factory_1)は、データストアへの繰り返しの呼び出しが必要になります。

役に立ちましたか?

解決

祖先は、「フィルタ」として記載されているが、

、それは実際には祖先の条件を追加するクエリを更新します。あなたは、クエリを反復処理するまで、データストアに要求を送信しないので、何を持っていることは正常に動作します。

ワンポイントマイナーかかわら:書き込みがエンティティグループのメンバーに連載されているので、同じ親を持つ500個の実体は、スケーラビリティを傷つけることができます。あなただけの製品を作った工場を追跡したい場合は、ReferencePropertyを使用します:

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

あなたはその後、使って、すべての製品を取得することができます:

myFactory.products
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top