From 61004cb5dba6d3db198f0fedce71cf644e8f9c43 Mon Sep 17 00:00:00 2001 From: Alexander-D-Karpov Date: Sun, 26 Mar 2023 23:09:49 +0300 Subject: [PATCH] fixed data views --- marking_hack/market/api/serializers.py | 4 ++-- marking_hack/market/api/views.py | 14 +++++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/marking_hack/market/api/serializers.py b/marking_hack/market/api/serializers.py index 29701bf..8b97078 100644 --- a/marking_hack/market/api/serializers.py +++ b/marking_hack/market/api/serializers.py @@ -27,11 +27,11 @@ class ItemSerializer(serializers.ModelSerializer): def get_volume(self, obj): if obj.volume == nan: - return 0 + return 1 try: return int(obj.volume) except ValueError: - return 0 + return 1 class Meta: model = Item diff --git a/marking_hack/market/api/views.py b/marking_hack/market/api/views.py index e120fd4..543d919 100644 --- a/marking_hack/market/api/views.py +++ b/marking_hack/market/api/views.py @@ -1,3 +1,4 @@ +from django.db.models import Count from rest_framework import generics from rest_framework.generics import get_object_or_404 from rest_framework.response import Response @@ -17,7 +18,13 @@ from marking_hack.market.models import Store, Region, StoreItem, Item class ListStore(generics.ListAPIView): serializer_class = StoreSerializer pagination_class = BigResultsSetPagination - queryset = Store.objects.filter(sales__isnull=False).order_by("-id_sp").distinct() + queryset = ( + Store.objects.filter(sales__isnull=False) + .order_by("-id_sp") + .distinct() + .annotate(num_sales=Count("sales")) + .order_by("-num_sales") + ) class ListStoreItems(generics.ListAPIView): @@ -27,11 +34,12 @@ class ListStoreItems(generics.ListAPIView): def get_queryset(self): store = get_object_or_404(Store, id_sp=self.kwargs["id_sp"]) ids = ( - StoreItem.objects.filter(store=store) + StoreItem.objects.filter(store=store, amount__gte=10) .values_list("item", flat=True) .distinct() ) - return Item.objects.filter(id__in=ids) + + return sorted(Item.objects.filter(id__in=ids), key=lambda x: x.sales.last().amount, reverse=True) class RegionListView(generics.ListAPIView):