Присвоить родителя существующей сущности - PullRequest
0 голосов
/ 26 июля 2011

У меня есть хранилище данных, которое уже заполнено сущностями.Тем не менее, они не были организованы в группы сущностей (так называемые отношения родитель-ребенок).Моя сущность Виды:

team = Team.get_by_key_name('Plants')
query = Plants.all()

plants еще не назначен команде Plants:

query = Plants.all().ancestor(team)
plants = query.fetch(50)
# This will result in an empty list

Я хотел бы назначить их команде сейчас:

query = Plants.all()
plants = query.fetch(50)

for p in plants:
  # This isn't right
  p.parent = team

db.put(plants)

Когда я пытаюсь выполнить запрос снова на основе ancestor:

query = Plants.all().ancestor(team)
plants = query.fetch(50)
# This still results in an empty list

Вопрос: Как назначить родителя для уже существующего объекта

1 Ответ

4 голосов
/ 26 июля 2011

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

Это потому, что родитель становится частью ключа сущности (следовательно, вам нужно передать любой существующий родительский элемент db.Key или get_by_key_name и т. Д., Чтобы они работали должным образом), поэтому его нельзя изменить в том смысле, как опишите (или, по крайней мере, насколько я знаю).

Edit: Сион поднимает вопрос, о котором я забыл упомянуть. При замене предыдущего объекта новым вам также необходимо позаботиться о любых ReferenceProperty и ListProperty(db.Key), которые могли указывать на старый объект. Я думаю, что урок дня здесь заключается в том, чтобы более тщательно разрабатывать и продумывать группы сущностей, прежде чем записывать какие-либо данные.

...