App Engine 上的 Polymodel 建议

发布于 2024-10-31 18:33:22 字数 754 浏览 1 评论 0原文

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

由于 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)

I'm designing a model for a posting system where an entry contains an image with or without a comment. An user can reply to it as either a comment or as an image entry as well.

As there can be more properties for ImageEntry, I came up with this design with Polymodel. Not sure if this is the best way to do this. Storage-wise, is CommentEntry less than ImageEntry?

Any suggestions would be great.

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

涫野音 2024-11-07 18:33:23

这个模型可以正常工作,并且是的,如果 ImageEntry 具有图像 URL 和/或 slug,那么 CommentEntry 将小于来自同一用户的 ImageEntry。

但是,我可以通过放置来使这变得更简单
create_by、image_url 和 slug 进入 Entry 并摆脱
CommentEntry 和 ImageEntry 的总和。自从
应用引擎数据存储区是无架构的
并且属性默认是可选的
当您填充 image_url 和 slug 属性时,您只需支付它们的费用
用于图像条目。

this model will work fine, and yes, a CommentEntry will be smaller than an ImageEntry from the same user if the ImageEntry has an image URL and/or slug.

however, i'd make this much simpler by putting
created_by, image_url, and slug into Entry and getting rid
of CommentEntry and ImageEntry altogether. since
the app engine datastore is schemaless,
and properties are optional by default,
you'll only pay the cost of the image_url and slug properties when you fill them
in for image entries.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文