Мне нужно применить функцию values_list() к набору queryset после фильтрации
Ниже приведен мой класс представлений:
from apps.embla_services.filters import RentPostFilters
from django_filters import rest_framework as filters
from apps.embla_services.models import RentPost
from apps.embla_services.serializers import RentPostBriefSerializer
class SearchRentPosts(generics.ListAPIView):
def get_queryset(self):
city = self.request.query_params.get("city")
if city:
return RentPost.objects.filter(city__name=city)
else:
return RentPost.objects.all()
serializer_class = RentPostBriefSerializer
filter_backends = (filters.DjangoFilterBackend,)
filterset_class = RentPostFilters
Ниже представлен мой класс фильтров:
from django_filters import rest_framework as filters
from apps.embla_services.models import RentPost
class RentPostFilters(filters.FilterSet):
title = filters.CharFilter(lookup_expr="icontains")
is_available = filters.BooleanFilter()
rent_type = filters.ChoiceFilter(choices=RentPost.RentTypeChoices.choices)
category__id = filters.NumberFilter()
available_from = filters.DateFromToRangeFilter()
price = filters.RangeFilter()
class Meta:
model = RentPost
fields = ["title", "is_available",
"rent_type", "category", "available_from", "price"]
Ниже представлен мой класс сериализатора:
from apps.embla_services.models import RentPost
class RentPostBriefSerializer(serializers.ModelSerializer):
uploaded_media = FileSerializer(source='media', many=True, read_only=True)
category = serializers.CharField(source="category.title")
is_expired = serializers.SerializerMethodField()
def get_is_expired(self, obj: RentPost):
if obj.available_To and obj.available_To < date.today():
return True
return False
class Meta:
model = RentPost
fields = ["id", "available_from", "title", "created_at", "latitude", "longitude",
"is_available", "uploaded_media", "delivery", "price", "rent_requests", "is_available", "is_expired", "city","category"]
Я хочу, чтобы после применения всех фильтров к набору запросов, я мог разделить этот набор запросов на подмассивы в зависимости от категории.
Например, если набор запросов содержит 30 элементов из 3 различных категорий (по 10 элементов в каждой категории). Я хочу, чтобы ответ, который отправляется пользователю, содержал 3 массива (по 1 для каждой категории) с 10 элементами. Возможно ли это? Если да, то как. Прошу прощения за мой английский и незнание языка. Я разработчик Nodejs и по настоянию клиента делаю этот проект на DRF.