在App Engine for Python中,是否可以持久化一个类并在其中嵌套另一个对象



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

这个类将像下面的例子一样建模,其中一个Venue包含一个Location对象。我想将其作为一个嵌套对象保存,并能够按嵌入对象中的字段进行查询。

类位置():
  city = db.StringProperty()
  state = db.StringProperty()

类场地(db.Model):
  name = db.StringProperty()
  location = location ()

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

是否可以使用Python?

考虑使用Reference属性。例如,将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也包含对场馆的引用。见:http://code.google.com/appengine/docs/python/datastore/datamodeling.html引用

目前还没有,但是NDB库支持通过将它们序列化为协议缓冲区或通过嵌套它们的属性(Objectify时尚)来相互嵌入模型。

最新更新