Я передаю NDB Key() с родителем отложенной функции. В этой функции я снова получаю сущность. Но я не могу использовать переданный ключ, чтобы получить объект напрямую. Мне нужно изменить пару ключей в ndb.Key().
deferred.defer(my_deferred.a_function, entity.key)
entity.key() выглядит так:
Key('Parents', 'my_parent', 'Childs', 'my_child') # the first pair is the parent?
my_deferred.py :
def a_function(key) :
entity = ndb.Key(key) # the pass entity.key does not work !!!!!
Предоставление исключения: ValueError: Key() должен иметь четное количество позиционных аргументов.
entity = ndb.Key('Childs', key.id(), parent = key.parent()).get() # this one works fine
Я не понимаю, почему метод entity.key() не дает мне ключ, который я могу использовать напрямую? Или есть другой способ получить сущность, не "подменяя" ключ. И я не понимаю исключение ValueError.
Обновление: спасибо Грегори.
entity = key.get() # works fine