【发布时间】:2021-02-19 13:30:16
【问题描述】:
我正在创建一个 Netflix 克隆应用程序,但我在使用模型时遇到了困难。 我有一个 Movie 模型,其中包含电影的字段,例如标题、持续时间、评级等。 我不确定我应该如何为我的数据库建模,但我认为我应该做的是多对多关系,例如,一个用户可以收藏很多电影,而一部电影可以被很多用户收藏。
但是,如果我这样做,我觉得我最终会得到一个包含许多用户和电影的收藏夹表,并且可能将此视为一个问题,必须遍历每一行才能找到当前用户,而不是这样做可能是 OneToMany 关系,例如,一个用户可以收藏很多电影,而一个电影可以被用户收藏。
首先,我不确定建模的正确方法是什么。
我也不知道如何将这种关系添加到我的用户模型中,因为我使用的是从django.contrib.auth.models 引入的用户模型
我在想办法解决这个问题时遇到了很多麻烦,我不想只是为用户添加一个多对多字段到我拥有的电影表中,而不了解它是否以及为什么它是一个好的/不好的方法。
【问题讨论】:
-
您可以使用
GenericForeignKey:docs.djangoproject.com/en/3.0/ref/contrib/contenttypes/… -
不确定我是否理解正确,但这是否意味着我想要一个 GenericRelation。根据文档,我似乎无法使用 GenericForeignKey 过滤所有用户喜爱的内容,但使用 GenericRelation 我可以通过
.all()获取所有喜爱的电影?
标签: django model many-to-many relationship one-to-many