6

Est-il possible de modifier ou d'affecter un nouveau parent à l'instance Modèle déjà dans le magasin de données? Par exemple, je besoin de quelque chose comme çaModifier | Attribuer un parent à l'instance du modèle dans le magasin de données Google App Engine

task = db.get(db.Key(task_key)) 
project = db.get(db.Key(project_key)) 
task.parent = project 
task.put() 

mais il ne fonctionne pas de cette façon parce que task.parent est méthode intégrée. Je pensais à créer une nouvelle instance de clé pour la tâche mais il n'y a pas moyen de changer de clé aussi.

Des pensées?

Répondre

9

Selon the docs, non:

Le parent d'une entité est définie lorsque l'entité est créée, et ne peut pas être modifié ultérieurement .

...

La clé d'une entité complète, y compris le chemin, le genre et le nom ou ID numérique, est unique et spécifique à cette entité. La clé complète est affectée lorsque l'entité est créée dans le magasin de données et aucune des parties ne peut changer.

La définition d'une entité parente est utile lorsque vous devez manipuler le parent et l'enfant dans la même transaction. Sinon, vous limitez simplement les performances en les forçant à appartenir au même groupe d'entités et en limitant votre capacité à mettre à jour la relation une fois l'entité créée.

Utilisez plutôt ReferenceProperty.

+0

Ouais, on dirait que je n'ai pas le choix :) merci. –

+0

BTW, voici une autre bonne utilisation des parents http://www.youtube.com/watch?v=AgaL6NGpkB8 dans l'exemple de Microblogging. –