我将带有父级的 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