Opened 3 years ago

Last modified 3 years ago

#32685 closed New feature

Add feature to preserve order in .filter(field__in=list) query — at Initial Version

Reported by: Barney Szabolcs Owned by: nobody
Component: Database layer (models, ORM) Version: 2.2
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

filter __in query does not guarantee to preserve order, so I usually sort afterwards using python's sort.

However, in django admin I cannot sort queries using python's sort when manipulating the QuerySet
since I have to return a QuerySet.
So, I'd do something like

queryset.filter(my_field__in=values).raw(
    f'order by array_position(ARRAY[{ ",".join(["%s"]*len(values)) }]::varchar[], my_field)', 
    params=values)

but this does not work...
is there a solution here? (I cannot use raw either since I have a queryset input argument to work with)

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top