6

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

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

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

Любые мысли?

ответ

9

Согласно the docs, нет:

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

...

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

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

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

+0

Да, похоже, у меня нет выбора :) спасибо. –

+0

Кстати, вот еще одно хорошее использование родителей http://www.youtube.com/watch?v=AgaL6NGpkB8 в примере Microblogging. –

Смежные вопросы