completed ApartamentGetManyViewSet

This commit is contained in:
Денис Сарапулов 2023-05-09 21:03:37 +10:00
parent f00635ef7c
commit 229ce9ecb3
2 changed files with 17 additions and 8 deletions

View File

@ -6,7 +6,6 @@ from . import views
urlpatterns = format_suffix_patterns([ urlpatterns = format_suffix_patterns([
path("apartaments/", views.ApartamentViewSet.as_view({'get': 'list'})), path("apartaments/", views.ApartamentViewSet.as_view({'get': 'list'})),
path("apartament/<int:pk>/", views.ApartamentViewSet.as_view({'get': 'retrieve'})), 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/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 пользователя
]) ])

View File

@ -25,21 +25,31 @@ class ApartamentViewSet(viewsets.ReadOnlyModelViewSet):
# TODO: доработать не рабочее # TODO: доработать не рабочее
class ApartamentGetManyViewSet(viewsets.ModelViewSet): class ApartamentGetManyViewSet(viewsets.ModelViewSet):
"""Вывод отдельных квартир для сравнения""" """Вывод отдельных квартир для сравнения"""
def get_apartaments_id(self): def get_queryset(self): # получение id квартир для избранного или сравнения
pk = self.request.query_params.get("pk", None) # получение id пользователя pk = self.request.query_params.get("pk", None) # получение id пользователя
queryset = []
if self.action == "retrieve": # если для страницы сравнения if self.action == "retrieve": # если для страницы сравнения
apartaments_id = User.objects.get(pk=pk).apartaments_for_comparison.split(',') # получение id квартир apartaments_id = User.objects.get(pk=pk).apartaments_for_comparison.split(',') # получение id квартир
elif self.action == "list": # если для страницы избранного elif self.action == "list": # если для страницы избранного
apartaments_id = User.objects.get(pk=pk).favorites_apartaments.split(',') # получение id квартир 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): def retrieve(self, request, *args, **kwargs):
apartaments_id = self.get_apartaments_id queryset = self.get_queryset()
apartaments = [] apartaments = []
for i in apartaments_id: for i in queryset:
apartaments.append(ApartamentDetailSerializer(Apartament.objects.get(pk=i)).data) 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}) return Response({'results': apartaments})