Мне нужно применить функцию 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.

Вернуться на верх