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'))