add filters at back
This commit is contained in:
parent
9966915e7f
commit
395cfa0e3b
|
@ -8,4 +8,5 @@ urlpatterns = format_suffix_patterns([
|
||||||
path("apartament/<int:pk>/", views.ApartamentViewSet.as_view({'get': 'retrieve'})),
|
path("apartament/<int:pk>/", views.ApartamentViewSet.as_view({'get': 'retrieve'})),
|
||||||
path("apartaments/comparison/", views.ApartamentGetManyViewSet.as_view({'get': 'retrieve'})), # пример: apartaments/comparison/?user_id=1 user_id - id пользователя
|
path("apartaments/comparison/", views.ApartamentGetManyViewSet.as_view({'get': 'retrieve'})), # пример: apartaments/comparison/?user_id=1 user_id - id пользователя
|
||||||
path("apartaments/favorite/", views.ApartamentGetManyViewSet.as_view({'get': 'list'})), # пример: apartaments/favorite/?user_id=1 user_id - id пользователя
|
path("apartaments/favorite/", views.ApartamentGetManyViewSet.as_view({'get': 'list'})), # пример: apartaments/favorite/?user_id=1 user_id - id пользователя
|
||||||
|
path("apartaments/filters/", views.ApartmentFilter.as_view({'post': 'list'}))
|
||||||
])
|
])
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
from rest_framework.response import Response
|
from rest_framework.response import Response
|
||||||
from rest_framework.views import APIView
|
from rest_framework.views import APIView, View
|
||||||
|
from rest_framework.request import Request
|
||||||
|
|
||||||
|
from django.http import HttpResponseBadRequest
|
||||||
|
|
||||||
from .models import Apartament, User
|
from .models import Apartament, User
|
||||||
from .serializer import (ApartamentListSerializer,
|
from .serializer import (ApartamentListSerializer,
|
||||||
ApartamentDetailSerializer)
|
ApartamentDetailSerializer)
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
|
class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
"""Вывод списка квартир или отдельной квартиры"""
|
"""Вывод списка квартир или отдельной квартиры"""
|
||||||
|
@ -49,4 +53,23 @@ class ApartamentGetManyViewSet(viewsets.ReadOnlyModelViewSet):
|
||||||
for i in queryset:
|
for i in queryset:
|
||||||
apartaments.append(ApartamentListSerializer(i).data)
|
apartaments.append(ApartamentListSerializer(i).data)
|
||||||
return Response({'results': apartaments})
|
return Response({'results': apartaments})
|
||||||
|
|
||||||
|
class ApartmentFilter(viewsets.ViewSet):
|
||||||
|
"""Вывод списка квартир или отдельной квартиры"""
|
||||||
|
|
||||||
|
def list(self, req: Request):
|
||||||
|
filters = dict(req.data);
|
||||||
|
unfiltered = ApartamentDetailSerializer(Apartament.objects.all()[:100], many=True).data;
|
||||||
|
filtered = [];
|
||||||
|
|
||||||
|
for entry in unfiltered:
|
||||||
|
if (filters['price_range']['from'] >= entry['price'] and (filters['price_range']['to'] != -1 and filters['price_range']['to'] <= entry['price'])):
|
||||||
|
continue;
|
||||||
|
if (filters['area_range']['from'] >= entry['perimetrs'] and (filters['area_range']['to'] != -1 and filters['area_range']['to'] <= entry['perimetrs'])):
|
||||||
|
continue;
|
||||||
|
if (filters['rooms'] != -1 and entry['rooms'] != filters['rooms']):
|
||||||
|
continue;
|
||||||
|
|
||||||
|
filtered.append(entry);
|
||||||
|
|
||||||
|
return Response(filtered);
|
Loading…
Reference in New Issue