Pregunta

Son los hijos de una entidad disponible en una Consulta?

Dado:

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()

Asumir 500 fábricas han hecho 500 productos por un total de 250.000 productos.Hay una forma de hacer eficiente de los recursos de consulta que devuelve los 500 productos fabricados por una fábrica?El ancestro es un método de filtro, de modo que, por ejemplo,Producto.todos().antepasado(factory_1) requeriría de llamadas repetidas al almacén de datos.

¿Fue útil?

Solución

Aunque antepasado, es descrito como un "filtro", que en realidad sólo las actualizaciones de la consulta para agregar el antepasado condición.Usted no envía una solicitud al almacén de datos hasta que iterar a través de la consulta, así que lo que tienes funcionará bien.

Un punto menor, aunque:500 entidades con el mismo padre puede lastimar a la escalabilidad, ya que las escrituras son serializados a los miembros de un grupo de entidad.Si sólo quieres la pista de la fábrica que hace un producto, utilice un ReferenceProperty:

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

Usted puede obtener todos los productos mediante el uso de:

myFactory.products
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top