【发布时间】:2009-11-29 06:52:00
【问题描述】:
想听听您的意见。在当前阶段(1.1),您会在 django 中使用通用关系还是坚持更传统的建模 - 鉴于目前还不可能轻松地遍历和过滤此类关系(与 ForeignKey、ManyToMany、OneToOne 关系相比)?
这是一个示例 - 我在数据库中记录每个用户最后一次看到每个页面的时间、他/她决定“关注”一篇文章的时间、他们希望多久接收一次电子邮件更新以及他们何时请求上次,上次向用户发送此类电子邮件的时间以及页面修订日志。
因此,为了构建一个有意义的电子邮件摘要,我必须构建非常繁重的查询,这样用户就不会收到比他们要求的更多的电子邮件,并且消息是最翔实和简短的。
一种方法 - 定义可能适合任何场景的 Activity 模型,并使用通用关系将它们连接到其他模型,另一种方法 - 定义单独的模型 PageView、EmailUpdateLog、EmailSubscription 并以“常规方式”访问它们。
使用泛型关系的缺点 - 编写复杂查询的代码更加困难,它们运行速度会更慢,优点是 - 模型中的代码更少并且更容易访问泛化对象(例如 Activity)。
您是否发现了一个场景,其中泛型关系除了成为一个有趣的概念外,还给您带来了巨大的优势?
也许您找到了其他模拟泛型关系的方法?
谢谢。
【问题讨论】:
标签: django django-models