как иметь множественные отношения между двумя моделями в django - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в 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

Надеюсь, вы получите то, что я хочу сделать. очевидно, что эта схема не работает. но я хочу сделать что-то похожее

1 Ответ

1 голос
/ 28 мая 2020

Этот может работать, но вам нужно указать другие значения для параметра related_name=… [Django -doc] , это имя отношения в обратном , поэтому вы можете построить такую ​​модель с помощью:

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()

Примечание : обычно лучше использовать settings.AUTH_USER_MODEL [Django -doc] для обозначения модели пользователя, чем для использования User модели [Django - doc] напрямую. Для получения дополнительной информации вы можете увидеть , относящийся к User модели раздел документации .

...