Django orm как оптимизировать запрос?

class Category(MPTTModel):
    name = models.CharField(max_length=500, verbose_name="Название категории")
    external_id = models.CharField(max_length=9, default='', verbose_name="Внешний ключ")
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')

class Course(models.Model):
    name = models.CharField(max_length=500, verbose_name="Название курса")
    category = models.ForeignKey('Category', on_delete=models.PROTECT, null=True, blank=True, related_name="get_courses")

category_list = Category.objects.filter(external_id='00000001').get_descendants(include_self=True)
list_category_course = []
for category in category_list:
    courses = [course.name for course in category.get_courses.all()]
    list_category_course.append({'category': category, 'courses': courses})

как оптимизировать запрос?

category_list.prefetch_related(Prefetch('get_courses', queryset=Course.objects.all().order_by('sort'), to_attr='courses'))
Вернуться на верх