假设,我正在制作一个电影评分应用程序。登录的用户应该能够对电影进行星级评分(范围在1到5之间)。
我想要快速访问所有评价者的姓名以及他们的评分。如果用户再次对电影进行评分,则应更新评分。同时,如果用户决定撤销他的评分,即提供零评分,我想从字段中删除该条目。
我相信字典将是实现这一目标的最佳选择。然而,我对建议持开放态度。
我也想让用户看到所有的电影,他/她已经评级与评级。
发布于 2017-04-10 19:21:43
您应该在用户模型和投票模型之间创建一个ForeignKey字段。为了只允许每个用户每部电影进行一次投票,您可能希望在投票模型上创建一个惟一的键约束,而不是用户and和movieid。
然后,投票应该包含与电影的关系和评级。如果用户撤回了他的投票,您可以将其从数据库中删除。
使用字典会给你带来问题,因为你会有多部电影。
为了提高计算投票的速度和性能,您可能希望查看一下缓存,简单地缓存投票的数量,并在用户每次在特定电影上添加/撤回投票时更新投票数量。
发布于 2017-04-10 19:06:12
您可以对django ORM使用: update_or_create()方法。https://docs.djangoproject.com/en/1.10/ref/models/querysets/#update-or-create
发布于 2017-04-10 19:11:52
如果您使用的数据库是Postgres,则可以使用JSONField
https://stackoverflow.com/questions/43321447
复制相似问题