fixed data views

This commit is contained in:
Alexander Karpov 2023-03-26 23:09:49 +03:00
parent 26b6096009
commit 61004cb5db
2 changed files with 13 additions and 5 deletions

View File

@ -27,11 +27,11 @@ class ItemSerializer(serializers.ModelSerializer):
def get_volume(self, obj): def get_volume(self, obj):
if obj.volume == nan: if obj.volume == nan:
return 0 return 1
try: try:
return int(obj.volume) return int(obj.volume)
except ValueError: except ValueError:
return 0 return 1
class Meta: class Meta:
model = Item model = Item

View File

@ -1,3 +1,4 @@
from django.db.models import Count
from rest_framework import generics from rest_framework import generics
from rest_framework.generics import get_object_or_404 from rest_framework.generics import get_object_or_404
from rest_framework.response import Response from rest_framework.response import Response
@ -17,7 +18,13 @@ from marking_hack.market.models import Store, Region, StoreItem, Item
class ListStore(generics.ListAPIView): class ListStore(generics.ListAPIView):
serializer_class = StoreSerializer serializer_class = StoreSerializer
pagination_class = BigResultsSetPagination 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): class ListStoreItems(generics.ListAPIView):
@ -27,11 +34,12 @@ class ListStoreItems(generics.ListAPIView):
def get_queryset(self): def get_queryset(self):
store = get_object_or_404(Store, id_sp=self.kwargs["id_sp"]) store = get_object_or_404(Store, id_sp=self.kwargs["id_sp"])
ids = ( ids = (
StoreItem.objects.filter(store=store) StoreItem.objects.filter(store=store, amount__gte=10)
.values_list("item", flat=True) .values_list("item", flat=True)
.distinct() .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): class RegionListView(generics.ListAPIView):