Повторный StructuredProperty ndb.GeoPt

Как я повторяю гео-точки как структурированные свойства?

Мой код выглядит так:

class MyModel(EndpointsModel):
 segments = ndb.StructuredProperty(ndb.GeoPt, repeated=True)

Когда я пытаюсь запустить код и создавать экземпляры MyModel, я получаю следующую ошибку:

AttributeError: type object 'GeoPt' has no attribute '_has_repeated'

Как узнать, является ли класс модели db или ndb, кажется, что _has_repeated является свойством, специфичным для моделей ndb, и https://cloud.google.com/appengine/docs/python/ndb/properties#structured похоже предположим, что ndb.GeoPt идентичен db.GeoPt.

1 ответ

Почему вы хотите использовать GeoPt со структурированным свойством? Просто используйте что-то вроде этого:

class MyModel(EndpointsModel):
 segments = ndb.GeoPtProperty(repeated=True)

Но если вы хотите хранить дополнительную информацию с каждым объектом GeoPt, используйте структурированное свойство следующим образом:

class GeoPtWithStruct(ndb.Model):
 geo = ndb.GeoPtProperty()
 bla = ndb.StringProperty()

class MyModel(EndpointsModel):
 segments = ndb.StructuredProperty(GeoPtWithStruct, repeated=True)

licensed under cc by-sa 3.0 with attribution.