Opened 4 years ago
Last modified 4 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)
Note:
See TracTickets
for help on using tickets.