summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/views.py10
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)