diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-03-31 12:45:55 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-03-31 12:45:55 +0200 |
commit | b3a7f49ee451e3e0ba944c3d1fa8d5510a382988 (patch) | |
tree | 1cda19212b69acffbd33767a00982b0de60c6e87 | |
parent | 087fa8b475cca05350d2a9f5d808c8b7e73e7513 (diff) | |
download | Ishtar-b3a7f49ee451e3e0ba944c3d1fa8d5510a382988.tar.bz2 Ishtar-b3a7f49ee451e3e0ba944c3d1fa8d5510a382988.zip |
Find basket API: order by basket order (fix)
-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) |