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)