При попытке получить цвета всех вариантов товара, которые доступны, делается много запросов. Возможна ли оптимизация?

Вот мои модели: https://pastebin.com/qCMypxwz

выполняемый запрос создает много похожих запросов, согласно инструменту отладки. Есть ли способ оптимизировать это? Я совсем новичок в django, поэтому не уверен, правильно ли я делаю запросы. Я хочу получить подробную информацию о первом варианте товара, но ключ colors словаря должен содержать все цвета, в которых доступны варианты.

Мое мнение:

productList = Products.objects.prefetch_related('category', 'variants_set__color_id', 'variants_set__image')

        for productName in productList:
            products = dict()
            prod_id = productName.variants_set.all()[0].id
            products['id'] = prod_id

            products['category'] = productName.category.category_name
            products['prod_name'] = productName.prod_name
            products['brand'] = productName.brand
            prod_colors = productName.variants_set.all().values_list('color_id__name', flat=True) #THIS QUERY LOOKS LIKE THE PROBLEM
            prod_images = list(productName.variants_set.all()[0].image.all())
            image_list = list()
            
            for image in prod_images:     
                image_list.append(image.image_url)
            products['image'] = image_list
            products['colors'] = list(prod_colors)
            price =  productName.variants_set.all()[0].price
            products['price'] = price
            createdAt =  productName.variants_set.all()[0].createdAt
            products['createdAt'] = createdAt
            productListDict.append(products)
Вернуться на верх