엔티티의 어린이를위한 Google App Engine Query (필터 아님)
-
22-08-2019 - |
문제
엔티티의 자녀가 쿼리에서 사용할 수 있습니까?
주어진:
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 개의 제품 만 반환 할 리소스 효율적인 쿼리를 형성하는 방법이 있습니까? 조상 방법은 필터이므로 eg product.all (). 조상 (infactory_1)을 사용하려면 데이터 저장소에 반복적 인 호출이 필요합니다.
해결책
조상은 "필터"로 묘사되지만 실제로 조상 조건을 추가하기 위해 쿼리를 업데이트합니다. 쿼리를 반복 할 때까지 요청을 보내지 않으므로 잘 작동합니다.
그러나 한 가지 사소한 요점 : 동일한 부모가있는 500 개 엔티티가 확장 성을 해칠 수 있습니다. 쓰기는 엔티티 그룹의 구성원에게 직렬화되기 때문입니다. 제품을 만든 공장을 추적하려면 ReferenceProperty를 사용하십시오.
class Product(db.Model):
factory = db.ReferenceProperty(Factory, collection_name="products")
그런 다음 다음을 사용하여 모든 제품을 얻을 수 있습니다.
myFactory.products
제휴하지 않습니다 StackOverflow