Хобрук: Ваш путь к мастерству в программировании

Как я могу добавить/изменить родителя объекта после его создания, но до того, как он будет помещен в хранилище данных?

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

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, но это работает только для обычных свойств. Есть ли способ сделать это?


  • Оператор John.parent = BlueClassroom.key не изменяет ключ, а только добавляет новое свойство с именем parent к объекту John. Ваш первый пример - это правильный способ установить родителя ключа, почему бы не использовать его, если вы знаете родителя? 09.06.2016
  • Потому что я не знаю, что такое родитель на этом этапе, это определяется в другой функции. Вероятно, мне следует переставить все так, чтобы я мог делать это в одном месте, но я хотел знать, есть ли способ сделать это так, как сейчас. 09.06.2016

Ответы:


1

Согласно конструктору класса модели NDB:

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

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

john = {name="John", last_name="Smith"}
...
John = Student(parent=BlueClassroom.key)
John.populate(john)
09.06.2016
  • Я видел это в документах, но я хотел знать, есть ли еще способ определить родителя после этого (но до его размещения). Поскольку я не могу найти способ сделать это, я просто передам данные в виде dict. 09.06.2016
  • Новые материалы

    Создание успешной организации по науке о данных
    "Рабочие часы" Создание успешной организации по науке о данных Как создать эффективную группу по анализу данных! Введение Это обзорная статья о том, как создать эффективную группу по..

    Технологии и проблемы будущей работы
    Изучение преимуществ и недостатков технологий в образовании В быстро меняющемся мире технологии являются решающим фактором в формировании будущего работы. Многие отрасли уже были..

    Игорь Минар из Google приедет на #ReactiveConf2017
    Мы рады сообщить еще одну замечательную новость: один из самых востребованных спикеров приезжает в Братиславу на ReactiveConf 2017 ! Возможно, нет двух других кланов разработчиков с более..

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...