如何在 Django 中的两个模型之间建立多重关系

how to have multiple relations between two models in django

我是 django 的新手,正在尝试为类似 youtube 的网站创建模型。 我正在尝试创建模型,使用户有以下记录:

1) 他上传的播放列表。

2) 他看过的播放列表。我尝试了以下型号:

class User(models.Model):
name=models.CharField
email=models.EmailField
password=models.CharField
isTeacher=models.BooleanField
upvotes=models.IntegerField

class Playlists(models.Model):
creator=models.ForeignKey(User, on_delete=models.CASCADE)
viewed_by=models.ManyToManyField(User, on_delete=models.CASCADE)
name=models.CharField
size=models.IntegerField

我希望你能得到我想做的事。显然这个方案行不通。但我想基于类似的理由做一些事情

可以工作,但是你需要为related_name=… parameter [Django-doc]指定不同的值,这是reverse[=中关系的名称21=],所以你可以构建这样的模型:

from django.conf import settings

class Playlists(models.Model):
    creator = models.ForeignKey(
        <b>settings.AUTH_USER_MODEL,</b>
        on_delete=models.CASCADE,
        <b>related_name='created_playlists'</b>
    )
    viewed_by = models.ManyToManyField(
        <b>settings.AUTH_USER_MODEL,</b>
        <b>related_name='viewed_playlists'</b>
    )
    name = models.CharField(max_length=128)
    size = models.IntegerField()

Note: It is normally better to make use of the settings.AUTH_USER_MODEL [Django-doc] to refer to the user model, than to use the User model [Django-doc] directly. For more information you can see the referencing the User model section of the documentation.