Django drf Serialize group by model field
Django drf Serialize group by model field У меня есть конечная точка drf, я получаю этот результат, но я хочу сгруппировать этот результат по полю модели product_type, как я могу это реализовать? Я пробовал как в этом ответе DRF: Serializer Group By Model Field. но это мне не помогло
как я могу группировать по типу товара в таком виде
мой код
.models.py
class Product(models.Model):
    PRODUCT_TYPE_CHOICES = [
        ('Snacks', 'Snacks'),
        ('Beverages', 'Beverages'),
        ('Cocktails', 'Cocktails'),
        ('Cofe', 'Cofe'),
        ('Desserts', 'Desserts'),
        ('Sauces', 'Sauces'),
    ]
    name = models.CharField(max_length=50)
    product_type = models.CharField(max_length=50, choices=PRODUCT_TYPE_CHOICES)
    img_url = models.URLField()
    grams = models.PositiveSmallIntegerField(blank=True, null=True)
    description = models.TextField(max_length=500, blank=True)
    extra_ingredients = models.ManyToManyField(Extra_Ingredients, blank=True)
    extra_info = models.CharField(max_length=50, blank=True)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    def __str__(self) -> str:
        return f'{self.product_type}'
.serialers.py
class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = '__all__'
.view.py
class ProductGroupApiView(generics.ListAPIView):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
                
Я понял ваше намерение классифицировать и возвращать данные через значение ключа product_type.
Добавлен процесс классификации возвращаемых значений в ProductGroupApiView. Возвращается значение, классифицированное как product_type.
views.py
from rest_framework import generics, status
from rest_framework.response import Response
from .models import Product
from .serializers import ProductSerializer
# Create your views here.
class ProductGroupApiView(generics.ListAPIView):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer
    
    def get(self, request, *args, **kwargs):
      response = super().get(request, *args, **kwargs)
      group = {product["product_type"]: [] for product in response.data}
      {group[product["product_type"]].append(product) for product in response.data}
      return Response(group, status=status.HTTP_200_OK)    
                    