Django - создание разделов для курса
Я создаю сайт с логикой Курс - Раздел - Урок. Я могу снимать разделы курса, но не могу снимать уроки этих разделов. Где я делаю неправильно?
Models.py
class CourseCategoryModel(models.Model):
name = models.CharField(max_length=200, verbose_name="Category Name")
slug = models.SlugField(unique=True)
class CourseModel(models.Model):
name = models.CharField(max_length=200, verbose_name="Course Name")
category = models.ForeignKey(CourseCategoryModel, null=True, blank=True, on_delete=models.PROTECT, verbose_name="Course Category")
class CourseLessonSectionModel(models.Model):
name = models.CharField(max_length=200, verbose_name="Section Name")
order = models.IntegerField(max_length=3, verbose_name="Section Order")
course = models.ForeignKey(CourseModel, null=True, blank=True, on_delete=models.PROTECT, verbose_name="Course")
class CourseLessons(models.Model):
course = models.ForeignKey(CourseModel, null=True, blank=True, on_delete=models.CASCADE, verbose_name="Course")
section = models.ForeignKey(CourseLessonSectionModel, null=True, blank=True, on_delete=models.CASCADE, verbose_name="Lesson Section")
name = models.CharField(max_length=200, verbose_name="Lesson Name")
order = models.IntegerField(max_length=3 , verbose_name="Lesson Order", default=0)
View.py
def detail(request, slug):
course = CourseModel.objects.get(slug=slug)
courseSection = CourseLessonSectionModel.objects.all().filter(kurs__slug=slug)
courseLessons = CourseLessons.objects.all().filter("what should i write here?")
return render(request, "coursedetail.html", context={
"course": course,
"courseLessons" : courseLessons,
"courseSection" : courseSection
})
Вы создали отношение ManyToOne, которое является ForeignKey для всего.
Вы хотите получить урок раздела. Я предполагаю, что вы уже правильно извлекли курс и раздел курса.
Вы можете __in
искать для фильтрации по идентификаторам всех секций с определенным курсом, так:
from django.db import Q
def detail(request, slug):
course = CourseModel.objects.get(slug=slug)
courseSection = CourseLessonSectionModel.objects.all().filter(kurs__slug=slug)
course_section_list=list(courseSection)
courseLessons = CourseLessons.objects.filter(Q(course=course) & Q(section__in=[i.id for i in course_section_list]))
return render(request, "coursedetail.html", context={
"course": course,
"courseLessons" : courseLessons,
"courseSection" : courseSection
})