在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时尚)来相互嵌入模型。