目前我有这个设计:
class Entry(db.Model):
creator = db.ReferenceProperty(User, required=True, collection_name='entries')
created_at = db.DateTimeProperty(auto_now_add=True)
# image
image_id = db.StringProperty() # key_name for Image
image_url = db.LinkProperty(indexed=False)
width = db.IntegerProperty(default=0, indexed=False)
height = db.IntegerProperty(default=0, indexed=False)
class Image(db.Model):
created_at = properties.DateTimeProperty(auto_now_add=True)
blob = blobstore.BlobReferenceProperty(required=True)
filename = db.StringProperty(indexed=False)
published = db.BooleanProperty(default=False, indexed=True)
width = db.IntegerProperty(default=0, indexed=False)
height = db.IntegerProperty(default=0, indexed=False)
这会更好还是更糟?我已将blob移至Entry。
class Entry(db.Model):
creator = db.ReferenceProperty(User, required=True, collection_name='entries')
created_at = db.DateTimeProperty(auto_now_add=True)
# image
image_blob = blobstore.BlobReferenceProperty(required=False)
filename = db.StringProperty(indexed=False)
image_id = db.StringProperty()
image_url = db.LinkProperty(indexed=False)
width = db.IntegerProperty(default=0, indexed=False)
height = db.IntegerProperty(default=0, indexed=False)
感谢。
答案 0 :(得分:1)
Blobreference属性类似于db.ReferenceProperty,除了实体实际位于blobstore中的事实。因此,预取ReferenceProperty也适用于BlobReferenceProperty。 blobstore.py还包括get_value_for_datastore,您可以使用它来预取blob实体。
回到第二个问题,将blob移到Entry,这取决于你的功能。
答案 1 :(得分:0)
如果您希望每个条目能够匹配许多图像,那么如果您需要在条目和图像之间建立一对多关系,则可以使用类似于您的第一个模型的内容。我使用的关系有点像:
class Article(db.Model):
user=db.UserProperty(verbose_name="userid")
class Image(db.Model):
reference=db.ReferenceProperty(Article,collection_name='matched_images')
primary_image = blobstore.BlobReferenceProperty()