1

假设,我正在制作一个电影评级应用程序。登录用户应该能够给电影评分(在 1 到 5 之间)。

我想快速访问所有评分者的姓名以及他们的评分。如果用户再次对电影评分,则应更新评分。同时,如果用户决定撤销他的评级,即提供零评级,我想从该字段中删除该条目。

我相信字典将是实现相同目标的最佳选择。但是,我愿意接受建议。

我还希望用户看到他/她评分的所有电影以及评分。

4

4 回答 4

2

您应该在用户模型和投票模型之间创建一个 ForeignKey 字段。每个用户只允许单次投票;对于每部电影,您可能希望在投票模型上通过用户 ID 和电影 ID 创建一个唯一的键约束。

然后投票应该包含与电影的关系和评级。如果用户撤回他的投票,您将其从数据库中删除。

使用字典会给您带来麻烦,因为您将拥有多部电影。

为了提高计算投票的速度和性能,您可能需要查看缓存并简单地缓存投票数量,并在每次用户对特定电影添加/撤回投票时更新投票数量。

于 2017-04-10T11:21:42.613 回答
0

您可以使用:update_or_create() 方法与 django ORM。 https://docs.djangoproject.com/en/1.10/ref/models/querysets/#update-or-create

于 2017-04-10T11:06:12.283 回答
0

您是否检查过django-star-ratings,使用单个模板标签为您的 Django 模型评分。

于 2017-04-10T11:36:29.957 回答
0

如果您使用的数据库是 Postgres,那么您可以使用JSONField

于 2017-04-10T11:11:51.647 回答