App Engine上的多模型建议

时间:2011-04-11 17:42:15

标签: google-app-engine model google-cloud-datastore

我正在设计一个发布系统的模型,其中一个条目包含带或不带注释的图像。用户可以将其作为评论或图像条目进行回复。

由于ImageEntry可以有更多属性,我用Polymodel想出了这个设计。不确定这是否是最好的方法。存储方面,CommentEntry是否小于ImageEntry?

任何建议都会很棒。

class Entry(polymodel.PolyModel):
  comment    = db.TextProperty()
  reply_to   = db.SelfReferenceProperty() # reference to the entry
  created_at = properties.DateTimeProperty(auto_now_add=True)
  updated_at = properties.DateTimeProperty(auto_now=True)

class CommentEntry(Entry):
  created_by = db.ReferenceProperty(User, collection_name='comment_entries')

class ImageEntry(Entry):
  created_by = db.ReferenceProperty(User, collection_name='image_entries')
  image_url  = db.LinkProperty(indexed=False)
  slug       = db.StringProperty(indexed=False)

1 个答案:

答案 0 :(得分:1)

此模型可以正常工作,是的,如果ImageEntry有图像URL和/或slug,则CommentEntry将小于同一用户的ImageEntry。

然而,通过推杆,我会做得更简单 created_by,image_url和slug进入Entry并摆脱 CommentEntry和ImageEntry共。以来 the app engine datastore is schemaless, 和properties are optional by default, 填写它们时,您只需支付image_url和slug属性的费用 用于图像条目。