我创建了一个ndb.KeyProperty
可以接受键的子类,也可以接受实体或基本 64 键字符串并将它们转换为键。它工作得很好,除非我尝试创建一个repeated
属性。
基本上我的代码是这样的:
def to_key(target):
if isinstance(target, ndb.Model):
target_key = target.key
elif isinstance(target, ndb.Key):
target_key = target
else:
try:
target_key = ndb.Key(urlsafe=target)
except:
raise TypeError('%s is not an ndb instance or key' % target)
return target_key
class AutoKeyProperty(ndb.KeyProperty):
def _validate(self, value):
return to_key(value)
处理可迭代值_validate
只是将问题转移到基ndb.KeyProperty
类。