如何为对象建模许多blob?

时间:2011-08-26 12:03:05

标签: python google-app-engine blobstore data-modeling

我希望在文本对象和blob之间启用类似一对多关系的内容,以便文本对象(“文章”或同样)具有许多图像和/或视频。我有两种方法可以做到这一点,第一种方法是使用blob列表作为实例变量。它会起作用吗?

class A(search.SearchableModel):
  blobs = db.ListProperty(blobstore.BlobReferenceProperty())

优点:只需一节课。可读且易于获取和设置数据。 缺点:缺少blob的额外信息,例如如果我想用描述性的单词标记blob,我仍然需要两个类:

class A(search.SearchableModel):
...
class B(db.Model):
  reference=db.ReferenceProperty(A,collection_name='matched_blobs',verbose_name="Title")
  blob = blobstore.BlobReferenceProperty()

后面的例子有一个缺点,因为它需要一个引用属性,并引入了两个类,其中问题可以用第一个例子中的类A来解决。后一个解决方案的优点是它清楚地记录了,而blobreferenceproperties的列表属性不是,后来的解决方案我已经实现了,现在我正在考虑使用blob列表而不是引用的集合。它是否重要或两者都同样有效?您能否推荐选择哪种方式?

由于

1 个答案:

答案 0 :(得分:4)

App Engine在其文档中实际上有一篇文章:http://code.google.com/appengine/articles/modeling.html