completed ApartamentGetManyViewSet
This commit is contained in:
parent
f00635ef7c
commit
229ce9ecb3
|
@ -6,7 +6,6 @@ from . import views
|
|||
urlpatterns = format_suffix_patterns([
|
||||
path("apartaments/", views.ApartamentViewSet.as_view({'get': 'list'})),
|
||||
path("apartament/<int:pk>/", views.ApartamentViewSet.as_view({'get': 'retrieve'})),
|
||||
# TODO: доработать
|
||||
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'})),
|
||||
path("apartaments/favorite/", views.ApartamentGetManyViewSet.as_view({'get': 'list'})), # пример: apartaments/favorite/?user_id=1 user_id - id пользователя
|
||||
])
|
||||
|
|
|
@ -25,21 +25,31 @@ class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
|
|||
# TODO: доработать не рабочее
|
||||
class ApartamentGetManyViewSet(viewsets.ModelViewSet):
|
||||
"""Вывод отдельных квартир для сравнения"""
|
||||
def get_apartaments_id(self):
|
||||
def get_queryset(self): # получение id квартир для избранного или сравнения
|
||||
pk = self.request.query_params.get("pk", None) # получение id пользователя
|
||||
queryset = []
|
||||
|
||||
if self.action == "retrieve": # если для страницы сравнения
|
||||
apartaments_id = User.objects.get(pk=pk).apartaments_for_comparison.split(',') # получение id квартир
|
||||
elif self.action == "list": # если для страницы избранного
|
||||
apartaments_id = User.objects.get(pk=pk).favorites_apartaments.split(',') # получение id квартир
|
||||
|
||||
return apartaments_id
|
||||
queryset = []
|
||||
for i in apartaments_id:
|
||||
queryset.append(Apartament.objects.get(pk=i))
|
||||
|
||||
return queryset
|
||||
|
||||
def retrieve(self, request, *args, **kwargs):
|
||||
apartaments_id = self.get_apartaments_id
|
||||
queryset = self.get_queryset()
|
||||
apartaments = []
|
||||
for i in apartaments_id:
|
||||
apartaments.append(ApartamentDetailSerializer(Apartament.objects.get(pk=i)).data)
|
||||
for i in queryset:
|
||||
apartaments.append(ApartamentDetailSerializer(i).data)
|
||||
return Response({'results': apartaments})
|
||||
|
||||
def list(self, request, *args, **kwargs):
|
||||
queryset = self.get_queryset()
|
||||
apartaments = []
|
||||
for i in queryset:
|
||||
apartaments.append(ApartamentListSerializer(i).data)
|
||||
return Response({'results': apartaments})
|
||||
|
Loading…
Reference in New Issue