From 8766388256438b25cbec076ddbd8a296a9df481a Mon Sep 17 00:00:00 2001 From: Anatoly Date: Wed, 25 Sep 2019 13:16:02 +0300 Subject: [PATCH] fixed similar establishments --- apps/establishment/models.py | 7 +++++-- apps/establishment/views/web.py | 5 +---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/establishment/models.py b/apps/establishment/models.py index 2fbff239..5391d066 100644 --- a/apps/establishment/models.py +++ b/apps/establishment/models.py @@ -128,10 +128,11 @@ class EstablishmentQuerySet(models.QuerySet): output_field=models.FloatField() )) - def similar(self, establishment_slug: str): + def similar(self, establishment_slug: str, output_objects: int = 12): """ Return QuerySet with objects that similar to Establishment. :param establishment_slug: str Establishment slug + :param output_objects: int of output objects """ establishment_qs = Establishment.objects.filter(slug=establishment_slug, public_mark__isnull=False) @@ -145,7 +146,9 @@ class EstablishmentQuerySet(models.QuerySet): public_mark__gte=10) \ .annotate_distance(point=establishment.address.coordinates) \ .annotate_intermediate_public_mark() \ - .annotate_mark_similarity(mark=establishment.public_mark) + .annotate_mark_similarity(mark=establishment.public_mark) \ + .order_by('distance') \ + .order_by('mark_similarity')[:output_objects] else: return self.none() diff --git a/apps/establishment/views/web.py b/apps/establishment/views/web.py index fef7fd5b..da10300f 100644 --- a/apps/establishment/views/web.py +++ b/apps/establishment/views/web.py @@ -30,10 +30,7 @@ class EstablishmentSimilarListView(EstablishmentListView): def get_queryset(self): """Override get_queryset method""" - number_objects = 12 # Count of similar objects - return super().get_queryset().similar(establishment_slug=self.kwargs.get('slug')) \ - .order_by('distance')[:number_objects * 3] \ - .order_by('mark_similarity')[:number_objects] + return super().get_queryset().similar(establishment_slug=self.kwargs.get('slug')) class EstablishmentRetrieveView(EstablishmentMixin, generics.RetrieveAPIView):