如何在 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.
我是 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 theUser
model [Django-doc] directly. For more information you can see the referencing theUser
model section of the documentation.