在django中,如何在两个模型之间有多个关系?

问题描述 投票:0回答:1

我是django的新手,正试图为一个类似youtube的网站创建模型,我试图创建一个用户有记录的模型。

1)他上传的播放列表,2)他观看的播放列表。

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

我希望你能明白我想做什么. 当然这个方案是行不通的. 但我想做一些类似的事情.

django foreign-keys many-to-many
1个回答
1
投票

可以 的工作,但你需要指定不同值的 related_name=… 参数[Django-doc],这是关系的名称,在 反面所以你可以用以下方法构建这样的模型。

from django.conf import settings

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

笔记: 一般来说,最好是使用 settings.AUTH_USER_MODEL [Django-doc] 来指代用户模型,比使用 User 模型[Django-doc] 直接。欲了解更多信息,您可以查看 参照 User 模型 文件部分.

© www.soinside.com 2019 - 2024. All rights reserved.