展示跟踪器的数据库设计

时间:2016-10-11 14:34:31

标签: django python-2.7 django-models

我正在设计一个允许我跟踪电视节目的页面。我得到了DB模型,但有一件事我不确定。我想要它,以便如果用户观看了一集,他们可以只将该剧集标记为已观看,但我不知道它是否应该是ForeignKey / ManyToMany或由于某些用户可以拥有一集观看,其他人不要......:\

有没有人对此问题有任何建议?我正在考虑创建一个名为episodeWatched的新模型,但复制模型的效率并不高,只是为了这个......

1 个答案:

答案 0 :(得分:0)

使用ManyToManyField,在User模型或您的用户个人资料模型中添加

episodes=models.ManyToManyField(Episode)

当用户使用

观看剧集时添加剧集
user.episodes.add(episode)

查找用户使用

观看的所有剧集
Episode.objects.filter(user=user)

或反过来,即根据您要执行的操作向users模型添加Episode字段

Django文档列出了与文章和出版物类似的示例 - the following comments in the source

Django文档还解释了如何使用另一个模型来存储关于关系的额外字段,例如,您可以使用它来存储用户观看剧集的时间。

https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/