Изменить | Назначить родительский элемент для экземпляра модели в хранилище данных Google App Engine - PullRequest
6 голосов
/ 05 июня 2010

Можно ли изменить или назначить нового родителя для экземпляра модели, который уже находится в хранилище данных?Например, мне нужно что-то вроде этого

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

, но это не работает, потому что task.parent является встроенным методом.Я думал о создании нового экземпляра Key для этой задачи, но также нет способа изменить ключ.

Есть мысли?

1 Ответ

9 голосов
/ 05 июня 2010

Согласно документам , нет:

Родитель объекта определен когда объект создан, и не может будет изменено позже.

...

Полный ключ сущности, включая путь, вид и имя или числовой идентификатор, является уникальным и специфичные для этой сущности. Полный Ключ назначается, когда объект созданный в хранилище данных, и ни один из его части могут измениться.

Установка родительского объекта полезна, когда вам нужно манипулировать родителем и дочерним объектом в одной транзакции. В противном случае вы просто ограничиваете производительность, вынуждая их обоих входить в одну группу сущностей и ограничивая свою способность обновлять отношения после создания сущности.

Вместо этого используйте ReferenceProperty.

...