Pergunta

Os filhos de uma entidade disponíveis em uma consulta?

Dada:

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

Suponha 500 fábricas fizeram 500 produtos para um total de 250.000 produtos. Existe uma maneira para formar uma consulta eficiente de recursos que irá retornar apenas os 500 produtos feitos por uma fábrica particular? O método é um antepassado de filtro, portanto, usando, por exemplo, Product.all (). Antepassado (factory_1) exigiria chamadas repetidas para o armazenamento de dados.

Foi útil?

Solução

Embora ancestral é descrito como um "filtro", que na verdade apenas atualiza a consulta para adicionar a condição ancestral. Você não enviar um pedido para o armazenamento de dados até que você iterar sobre a consulta, então o que você tem vai funcionar bem.

Um ponto menor embora: 500 entidades com o mesmo pai pode machucar a escalabilidade, uma vez que as gravações são serializado para membros de um grupo de entidades. Se você apenas deseja acompanhar a fábrica que fez um produto, usar um ReferenceProperty:

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

Você pode então obter todos os produtos usando:

myFactory.products
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top