Как объединить несколько моделей в один DetailView - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть 3 модели Course, CourseSection, SectionVideo и последние 2, связанные с моделью Course. Я хочу создать DetailView для курса, который будет содержать все модели, я имею в виду, где я могу показать разделы внутри и внутри раздела показать видео. Как это сделать?

class Course(models.Model):
    title = models.CharField(max_length=255)
    slug = models.SlugField(max_length=150, null=True, blank=True)
    description = models.TextField()
    image = models.ImageField(upload_to='courses/course_images',blank=True,null=True)
    cover = models.ImageField(upload_to='courses/course_covers',blank=True,null=True)
    tutor = models.ForeignKey(User,related_name='tutor_courses',on_delete=models.CASCADE,null=True)
    students = models.ForeignKey(User,related_name='course_students',blank=True,on_delete=models.CASCADE,null=True)
    created = models.DateTimeField(default=timezone.now)
    updated = models.DateTimeField(auto_now=True)
    category = models.ForeignKey(CourseCategories,on_delete=models.CASCADE)
    certificate = models.ImageField(upload_to='courses/course_certificates',blank=True,null=True)
    languages = LanguageField(blank=True)
    rank_score = models.FloatField(default=0.0)
    price = models.FloatField(default=0.0)
    discount_price = models.FloatField(blank=True, null=True)

class CourseSections(models.Model):
    title = models.CharField(max_length=50)
    course = models.ForeignKey(Course,on_delete=models.CASCADE,null=True)

class SectionVideos(models.Model):
    video = models.FileField(upload_to='courses/course_videos',max_length=100)
    section = models.ForeignKey(CourseSections,on_delete=models.CASCADE,null=True)

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать DetailView для самой верхней сущности (курс в вашем примере) https://docs.djangoproject.com/en/3.0/ref/class-based-views/generic-display/

, а затем переопределить get_context_data () и добавить соответствующую информацию в контекст и тогда в шаблоне вы обычно можете получить к нему доступ.

пример из официальной документации: https://docs.djangoproject.com/en/3.0/topics/class-based-views/generic-display/#making -friendly-template-contexts

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...