При попытке получить цвета всех вариантов товара, которые доступны, делается много запросов. Возможна ли оптимизация?
Вот мои модели: 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)