Frage

Sind die Kinder eines Unternehmens in einer Abfrage?

Gegeben:

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

Angenommen, 500 Fabriken haben 500 Produkte für insgesamt 250.000 Produkte. Gibt es eine Möglichkeit, eine ressourceneffiziente Abfrage zu bilden, die nur die 500 Produkte von einer bestimmten Fabrik zurückkehren werden? Vorfahr-Verfahren ist ein Filter, so beispielsweise unter Verwendung von Product.all (). Ahne (Factory_1) würde Anrufe auf den Datenspeicher wiederholt erfordern.

War es hilfreich?

Lösung

Obwohl Vorfahren als „Filter“ beschrieben, aktualisiert sie eigentlich nur die Abfrage der Vorfahr Bedingung hinzuzufügen. Sie haben nicht eine Anfrage an den Datenspeicher senden, bis Sie über die Abfrage durchlaufen, so was Sie haben, wird funktionieren.

Ein kleiner Punkt aber: 500 Einheiten mit dem gleichen Elternteil kann Skalierbarkeit verletzt, da schreibt an die Mitglieder einer Einheit Gruppe serialisiert werden. Wenn Sie nur die Fabrik verfolgen möchten, die ein Produkt aus, verwenden Sie einen Reference:

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

Sie können dann alle Produkte erhalten, indem Sie:

myFactory.products
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top