Как показать все урлы уроков, присутствующие в списке уроков?

Я хотел бы получить урлы уроков, присутствующие в модели уроков.

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:

  1. Курс: "Как изучить Django"
  2. В этом курсе у меня есть 3 урока: Урок 1, Урок 2, Урок 3
  3. .
  4. И каждый урок содержит несколько урлов урока. т.е. Урок 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 поиск используется для фильтрации в диапазоне значений из списка.

Вернуться на верх