Question

sont les enfants d'une entité disponible dans une requête?

Vu:

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

Assumer 500 usines ont fait 500 produits pour un total de 250.000 produits. Y at-il un moyen de former une requête efficace des ressources qui renverra seulement les 500 produits fabriqués par une usine en particulier? La méthode d'ancêtre est un filtre, de sorte que par exemple en utilisant Product.all () ancêtre. (FACTORY_1) nécessiterait des appels répétés à la datastore.

Était-ce utile?

La solution

Bien que l'ancêtre est décrit comme un « filtre », il fait juste met à jour la requête pour ajouter la condition des ancêtres. Vous ne pas envoyer une demande au magasin de données jusqu'à ce que vous itérer sur la requête, donc ce que vous avez fonctionnera bien.

Un point mineur si: 500 entités avec le même parent peut blesser l'évolutivité, car les écritures sont sérialisés aux membres d'un groupe d'entités. Si vous voulez juste suivre l'usine qui fabriquait un produit, utilisez un ReferenceProperty:

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

Vous pouvez obtenir tous les produits en utilisant:

myFactory.products
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top