Я создал подкласс ndb.KeyProperty
, который может принимать ключи, а также сущности или базовые строки ключа 64 и преобразовывать их в ключи. Он отлично работает, за исключением случаев, когда я пытаюсь создать свойство repeated
.Повторяющиеся подклассы свойств ndb
В основном мой код это:
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)
Обработка Iterable значения в _validate
просто переходит к проблеме вниз к основанию ndb.KeyProperty
класса.
К сожалению, не было времени, чтобы проверить это, пока now.I не хотел, чтобы создать суть, чтобы показать, почему выше не работает, но даже используя свой собственный код сверху, он работает правильно. Не знаю, что изменилось, кроме, возможно, SDK 1.8.6. –