想听听你的意见。在目前的阶段(1.1),你会在django中使用泛型关系还是坚持更传统的建模--考虑到还不可能轻松地遍历和过滤这样的关系(与ForeignKey,ManyToMany,OneToOne关系相比)?
这里有一个例子-我在数据库中跟踪每个用户最后一次看到每个页面的时间,他/她决定“关注”一篇文章的时间,他们想要多长时间接收一次电子邮件更新,他们最后一次请求的时间,这样的电子邮件最后一次发送给用户的时间以及页面修改的日志。
因此,为了构建一个有意义的电子邮件摘要,我必须构建相当繁重的查询,这样用户就不会收到比他们要求的更多的电子邮件,并且消息最具信息性和简洁性。
一种方法是定义可能适合任何场景的活动模型,并使用泛型关系将它们连接到其他模型,另一种方法是定义单独的模型PageView、EmailUpdateLog、EmailSubscription,并以“通常的方式”访问它们。
使用泛型关系的缺点是很难编写复杂的查询,而且它们运行起来会更慢、更好-模型中的代码更少,更容易访问泛化对象(例如Activity)。
除了是一个有趣的概念之外,你有没有发现泛型关系给你带来巨大优势的场景?
也许你找到了其他方法来模拟泛型关系?
谢谢。
发布于 2009-11-29 19:35:54
我会质疑你的初始假设:
,因为还不可能简单地遍历和过滤这样的关系
我认为遍历和过滤泛型关系并不是特别困难。只要您定义了关系的两端,向前和向后遍历的工作方式与正常的ForeignKeys基本相同。
让这些查询像正常关系一样高效是完全有可能的,所以我真的看不出有什么问题。
发布于 2009-11-29 15:15:59
一切都取决于您的需求/任务。
对于某些任务,泛型关系很好(我使用它们),而其他任务则更好地使用“传统建模”。
https://stackoverflow.com/questions/1814861
复制相似问题