Родитель для сущности может быть установлен только во время его создания, поэтому только в конструкторе db.Model
экземпляра подкласса. Попытка присвоить атрибуту parent
экземпляра db.Model
приведет к перезаписи его функции parent()
, но фактический родительский элемент для соответствующей сущности хранилища данных не будет изменен.
Если у вас есть отношения, которые невозможно установить во время создания дочернего объекта, вам следует рассмотреть возможность его кодирования как обычного свойства.
В качестве альтернативы (если вы не можете позволить себе не иметь отношения родитель-потомок из-за нужных вам транзакций), вы можете попытаться отложить создание дочернего объекта до тех пор, пока не сможете определить, какой родитель должен иметь его. Поскольку очевидно, что вы также используете родительские данные (то есть name
из Employee
), чтобы установить key_name
для дочерней сущности, этот подход, кажется, имеет смысл. (Имена ключей, как и родители, также могут быть установлены только при создании сущности).