重复了ndb.GeoPt的StructuredProperty

时间:2014-10-24 06:39:32

标签: python google-app-engine google-cloud-datastore app-engine-ndb

如何将地理点重复为结构化属性?

我的代码如下所示:

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

当我尝试运行代码并创建MyModel的实例时,我收到以下错误:

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

How to find out if a model class is db or a ndb似乎暗示_has_repeated是特定于ndb模型的属性,https://cloud.google.com/appengine/docs/python/ndb/properties#structured  似乎暗示ndb.GeoPt与db.GeoPt相同。

1 个答案:

答案 0 :(得分:2)

为什么要将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)