2012-06-13 2 views
0

J'utilise GAE avec python et je suis tombé sur ce problème, je suis en train de faire quelque chose comme cette requête (filtre) - Python:GAE - par la propriété de la propriété de l'objet

db.delete(db.Query(StudentVote).filter('topic.lecture = ', lecture)) 

et

db.delete(db.Query(StudentVote).filter('topic.lecture.course.owner = ', owner)) 

J'essaye de supprimer un groupe d'entités, chacune ayant une propriété de sujet qui a la propriété de lecture et ainsi de suite.

StudentVote-> sujet-> lecture-> Cours-> propriétaire

Mais la requête ne fonctionne pas, est-il possible de filtrer cette façon? a ou quelle est la meilleure pratique pour accomplir cette fonctionnalité?

Merci avancé, Gal.

+0

vous ne pouvez pas le faire de cette façon. Si vous voulez interroger sur une conférence, vous devez interroger sur Lecture et non sur StudentVote et la même chose pour le propriétaire. mais vous ne pouvez pas "traverser" comme ceci sur un objet de requête. – aschmid00

Répondre

0

S'il s'agit d'une requête courante, vous devez placer le propriétaire en tant que propriété indexée dans StudentVote. Cela rendrait vos écritures un peu plus chères, mais cela vous permettrait de faire une requête par propriétaire. Sinon, si c'est rare et que les performances ne posent pas de problème, vous pouvez interroger manuellement la chaîne.

+0

Qu'est-ce qu'une propriété indexée? et en quoi diffère-t-il d'une propriété ordinaire? – GalDude33

+1

Les propriétés sont indexées par défaut. Vous pouvez choisir d'avoir des propriétés non indexées, ce qui réduira vos coûts d'écriture, mais vous ne pouvez pas effectuer de recherche sur des propriétés non indexées. https://developers.google.com/appengine/docs/python/datastore/queries#Unindexed_Properties – dragonx

Questions connexes