3

在 App Engine for Python 中,有没有像 Objectify(Java 库)这样的东西,我可以轻松地将一个类嵌入另一个类并将其保存到数据存储区?

此类将像以下示例一样建模,其中 Venue 包含 Location 对象。我想将其作为一个嵌套对象保留,并且能够通过嵌入对象中的字段进行查询。

类位置():
  城市= db.StringProperty()
  状态= db.StringProperty()

类地点(db.Model):
  名称= db.StringProperty()
  位置=位置()

以下是有关它如何在 App Engine for Java 中的 Objectify 中工作的信息。
http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#@Embedded

这可能使用 Python 吗?

4

2 回答 2

3

考虑使用参考属性。即,将 Location 对象存储为其自己的实体,并通过引用将该位置合并到 Venue 对象中。

class Location():
  city = db.StringProperty()
  state = db.StringProperty()

class Venue(db.Model):
  name = db.StringProperty()
  location = db.ReferenceProperty(Location)

然后,如果您想同时在 Location 和 Venue 上进行交易,请使用数据存储交易。

编辑:要查询“包含”对象中的字段,请使用数据存储“反向引用”。即,Venue 包含对 Location 的引用这一事实意味着 Location 也包含对 Venues 的引用。请参阅:http ://code.google.com/appengine/docs/python/datastore/datamodeling.html#References

于 2011-07-19T20:26:07.937 回答
2

目前还没有,但NDB 库支持将模型序列化为协议缓冲区或嵌套它们的属性(Objectify 方式),从而将模型相互嵌入。

于 2011-07-20T00:35:19.977 回答