1

Из того, что я прочитал в документах, невозможно изменить родительский объект после того, как он был помещен в хранилище данных. Но я ищу способ изменить родителя до того, как это произойдет (но после его создания). Так что вместо того, чтобы это:Как я могу добавить/изменить родительский объект после его создания, но прежде чем он будет помещен в хранилище данных?

John = Student(parent=BlueClassroom.key, name="John", last_name="Smith") 
John.put() 

Я ищу что-то вроде этого:

John = Student(name="John", last_name="Smith") 
John.parent = BlueClassroom.key 
John.put() 

Теперь первый один работает, а второй не делает (он просто игнорирует вторую строку). Я также пытался использовать populate, но это работает только для обычных свойств. Есть ли способ сделать это?

+0

Оператор 'John.parent = BlueClassroom.key' не меняет ключ, он добавляет новое свойство, называемое «parent», в объект 'John'. Ваш первый пример - правильный способ установки родителя ключа, почему бы не использовать его, когда вы знаете родителя? –

+0

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

ответ

0

Согласно NDB Model Class Constructor документы:

Вы не можете легко определить свойство с именем «ключ», «идентификатор», «родитель», или «пространства имен». Если вы передаете, например, ключ = «foo» в конструкторе или вызов populate(), он устанавливает ключ сущности, а не атрибут свойства с именем «ключ».

Я предложил бы передавая данные вокруг как Dict, пока вы не будете готовы создать объект:

john = {name="John", last_name="Smith"} 
... 
John = Student(parent=BlueClassroom.key) 
John.populate(john) 
+0

Я видел это в документах, но я хотел знать, есть ли еще способ определить родителя после этого (но прежде, чем положить его). Поскольку я не могу найти способ сделать это, я просто передам данные как dict. –

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

  • Нет связанных вопросов^_^