【发布时间】:2018-10-20 21:38:33
【问题描述】:
我有两个模型:Post和Comment,每个都可以被User点赞。
1) 当然,总喜欢应该呈现在每个 Post 或 Comment 附近的某个地方
2) 而且每个User 都应该有一个包含所有喜欢内容的页面。
所以,最明显的方法就是使用 m2m 字段,这似乎会在未来导致很多问题。
那么这个呢?
1) Post 和 Comment 模型应该有一些
users_liked_ids = ArrayField(models.IntegerField())
2)User模型也应该有这样的字段:
posts_liked_ids = ArrayField(models.IntegerField())
comments_liked_ids = ArrayField(models.IntegerField())
而User每次点赞,都会执行两个动作:
1) 用户 ID 添加到帖子/评论的users_liked_ids 字段
2) 帖子/评论的 id 添加到用户的posts_liked_ids/comments_liked_ids 字段
问题是:
1) 这是一个好的计划吗?)
2) 以这种方法进行查找以获取“是否喜欢该帖子/评论”但当前用户是否有效
3) 将赞存储在某个单独的表中会更好,而不是存储在赞中
型号,还可以在ArrayField
4) 使用明显的 m2m 可能更好?
【问题讨论】:
标签: django postgresql performance database-design