Должен ли я использовать отношения "многие-к-одному" или "многие-ко-многим"?
В общем, я создаю сайт с помощью django, где я создал класс courses
и отдельный класс Class
. Теперь я запутался, какие отношения мне следует использовать.
Мой код:
class Class(models.Model):
title = models.CharField(max_length=100)
video = models.FileField(upload_to='class/class_videos',null=True,
validators=[FileExtensionValidator(allowed_extensions=['MOV','avi','mp4','webm','mkv'])])
def __str__(self):
return self.name
class Course(models.Model):
title = models.CharField(max_length=100)
image = models.ImageField(upload_to='class/instructor_pics', null=True)
instructor = models.CharField(max_length=100)
instructor_image = models.ImageField(upload_to='class/instructor_pics', null=True)
students = models.ManyToManyField(User, related_name='courses_joined', blank=True)
slug = models.SlugField(max_length=200, unique=True)
description = models.TextField(max_length=300, null=True)
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-created']
def __str__(self):
return self.title
Заранее спасибо!
Думаю над вашей проблемой, каждый класс может принадлежать только одному курсу, но каждый курс может иметь несколько классов, правильно?
Если это так, то у вас должно быть много к одному, где много - это класс, а курс - это один.
У вас уже есть это в коде
students = models.ManyToManyField(User, related_name='courses_joined', blank=True)
classes = models.OneToManyField(Class, related_name='...')
Просто добавьте строку classes = models.ForeignKey(Class, on_delete=models.CASCADE, null=True)
Я полагаю, что course
будет разделен на classes
. Таким образом, модель Class
будет содержать поле ForeignKey
, указывающее на модель Course
.
Точнее, это то, чего захочет ОП
class Class(models.Model):
course = models.ForeignKey(Course, related_name='classes', on_delete=models.CASCADE)