diff options
| -rw-r--r-- | archaeological_finds/views.py | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index 5068d24ee..1fc2b3722 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -1139,9 +1139,13 @@ class PublicFindAPI(APIView):          except models.FindBasket.DoesNotExist:              return empty          q = models.FindBasket.items.through.objects.filter( -            findbasket_id=basket.id).order_by("id") -        return models.Find.objects.filter( -            id__in=[bi["find_id"] for bi in q.values("find_id")]) +            findbasket_id=basket.id).values("find_id").order_by("id") +        id_list = [bi["find_id"] for bi in q] +        clauses = ' '.join(['WHEN id=%s THEN %s' % (pk, i) +                            for i, pk in enumerate(id_list)]) +        ordering = 'CASE {} END'.format(clauses) +        return models.Find.objects.filter(id__in=id_list).extra( +           select={'ordering': ordering}, order_by=('ordering',))      def get(self, request, format=None):          serializer = PublicSerializer(self.get_queryset(), many=True) | 
