Django Group By как в SQL

У меня есть следующая модель

class Product(models.Model):
   name = models.CharField(max_length=20)

class FAQ(models.Model):
    product = models.ForeignKey(Product, on_delete=models.PROTECT)
    title = models.CharField(max_length=500)
    description = models.TextField(max_length=2000)
    order = models.IntegerField(validators=[MinValueValidator(0)], default=0)
    column = models.IntegerField(validators=[MinValueValidator(0)], default=0)

    def __str__(self):
        return f'{self.product.name}->{self.title}->{self.column}'

    class Meta:
        ordering = ('column', 'order')

Я хочу сгруппировать все результаты, где столбец одинаковый, т.е. IF столбец имеет значение 1 в моей модели все данные заключены в один список Я пытался искать аннотацию, но не смог понять, как использовать в моем коде

ожидаемый ответ

[
    [## this have column value 1 
        {
            "product": 1,
            "title": "Test 1",
            "description": "Description 1",
            "order": 0,
        },
        {
            "product": 1,
            "title": "Test 2",
            "description": "Description 2",
            "order": 1,
        }
    ],
    [ ## this have column value 2
        {
            "product": 1,
            "title": "Test3",
            "description": "Description 3",
            "order": 0,
        },
        {
            "product": 1,
            "title": "Test 4",
            "description": "Description 4",
            "order": 1,
        }
    ]
]

Вот мой общий код any

class FAQView(APIView):
    def list(self, request):
        queryset = FAQ.objects.values('product', 'title', 'description', 'order').annotate("?")
        serializer = FAQSerializer(queryset, many=True)
        return Response(serializer.data)
Вернуться на верх