Python 如何为一个对象建模多个BLOB?
我想在文本对象和blob之间启用类似一对多的关系,以便文本对象(一篇“文章”或类似的内容)具有许多图像和/或视频。我看到了两种方法,第一种是使用blob列表作为实例变量。行吗Python 如何为一个对象建模多个BLOB?,python,google-app-engine,blobstore,data-modeling,Python,Google App Engine,Blobstore,Data Modeling,我想在文本对象和blob之间启用类似一对多的关系,以便文本对象(一篇“文章”或类似的内容)具有许多图像和/或视频。我看到了两种方法,第一种是使用blob列表作为实例变量。行吗 class A(search.SearchableModel): blobs = db.ListProperty(blobstore.BlobReferenceProperty()) 优点:只需一节课。可读且易于获取和设置数据。 缺点:缺少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()
后一个示例有一个缺点,因为它需要referenceproperty,并引入了两个类,在这些类中,问题可以像第一个示例中那样仅使用类a来解决。后一种解决方案的优点是,它有明确的文档记录,而blobreferenceproperties的listproperty没有,我已经实现了后一种解决方案,现在我考虑使用Blob列表而不是引用的集合。这有关系吗?还是两者都会同样有效?你能推荐选择哪种方式吗,如果有这些或其他方式的话
感谢App Engine在其文档中实际有一篇关于此的文章:App Engine在其文档中实际有一篇关于此的文章:感谢链接!
db.ListProperty(blobstore.BlobReferenceProperty())
我从未见过有人在使用它,也许它不会工作。我希望现在可以很容易地确定哪些blob属于哪个实体,反之亦然。我可能会在这里保留带有2个类的模型。@Niklas它不会工作-您有一个项目列表,而不是属性列表。你想要db.ListProperty(blobstore.BlobKey)
db.ListProperty(blobstore.BlobKey)
就是我想要的。我想知道如果我使用ListpRoperty而不是引用,在datastore管理控制台数据视图中会发生什么。现在有了一个指向“查看blob”的清晰链接如果我使用当前的实现,它仍然有使用旧实例变量blobproperty的痕迹,并且我希望能够使用get\u serving\u url
,因此我将所有Blob移动到blobstore,并且我不会使用db.blobproperty
,因为blobstore与get\u serving\u url和admin视图相比更好。感谢链接!db.ListProperty(blobstore.BlobReferenceProperty())
我从未见过有人在使用它,也许它不会工作。我希望现在可以很容易地确定哪些blob属于哪个实体,反之亦然。我可能会在这里保留带有2个类的模型。@Niklas它不会工作-您有一个项目列表,而不是属性列表。你想要db.ListProperty(blobstore.BlobKey)
db.ListProperty(blobstore.BlobKey)
就是我想要的。我想知道如果我使用ListpRoperty而不是引用,在datastore管理控制台数据视图中会发生什么。现在有了一个指向“查看blob”的清晰链接如果我使用当前的实现,它仍然有使用旧实例变量blobproperty的痕迹,并且我希望能够使用get\u serving\u url
,因此我将所有Blob移动到blobstore,而我不会使用db.blobproperty
,因为blobstore使用get\u serving\u url和admin视图更好。