Как показать все урлы уроков, присутствующие в списке уроков?
Я хотел бы получить урлы уроков, присутствующие в модели уроков.
class Course(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
description = models.TextField()
price = models.FloatField()
class Lesson(models.Model):
title = models.CharField( max_length=200)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
is_active = models.BooleanField(default=True)
class LessonURL(models.Model):
category = models.ForeignKey(Lesson, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
video_url = models.URLField()
Ниже приведен мой views.py
def courseDetail(request, category_slug, course_slug):
try:
course_detail = Course.objects.get(category__slug=category_slug, slug=course_slug)
all_lessons = Lesson.objects.filter(course=course_detail).order_by('created_date')
all_lesson_urls = LessonURL.objects.filter(category__id__in=all_lessons)
except Exception as e:
raise e
context = {
'course_detail': course_detail,
'all_lessons': all_lessons,
'all_lesson_urls': all_lesson_urls,
}
return render(request, 'course-detail.html', context)
Вот мой urls.py
urlpatterns = [
path('<slug:category_slug>/<slug:course_slug>/', views.courseDetail, name='course-detail'),
]
Я пытаюсь объяснить свою проблему на примере ниже Ex:
- Курс: "Как изучить Django"
- В этом курсе у меня есть 3 урока: Урок 1, Урок 2, Урок 3 .
- И каждый урок содержит несколько урлов урока. т.е. Урок 1: URL1, URL2, URL3 - Урок 2 содержит URL4, URL5, URL6, и так далее...
Я столкнулся с проблемой при извлечении урлов урока. Когда я запускаю приведенный выше код, он показывает. Урок 1 - (URL1, URL2, URL3, URL4, URL5, URL6) Урок 2 - (URL1, URL2, URL3, URL4, URL5, URL6)
Но я хотел показать, как показано ниже: Урок 1 - (URL1, URL2, URL3) Урок 2 - (URL4, URL5, URL6)
Помогите пожалуйста!!! Спасибо
Не совсем уверен, что вы хотите сделать, но моя догадка заключается в том, чтобы заменить следующее:
all_lesson_urls = LessonURL.objects.filter(category__id__in=all_lessons)
с
all_lesson_urls = LessonURL.objects.filter(category__id__in=all_lessons).values("category__title", "title")
Я предполагаю, что вы успешно получаете all_chapters
из модели Chapter
, поэтому для получения all_lessons
из модели Lesson
выполните следующий запрос:
all_chapters = Chapter.objects.filter(course=course_detail).order_by('created_date')
list_of_all_chapters=list(all_chapters)
all_lessons = Lesson.objects.filter(chapter__id__in=[i.id for i in list_of_all_chapters])
Поскольку
__in
поиск используется для фильтрации в диапазоне значений из списка.