我正在设计一个发布系统的模型,其中一个条目包含带或不带注释的图像。用户可以将其作为评论或图像条目进行回复。
由于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)
答案 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属性的费用 用于图像条目。