﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
32685	Add feature to preserve order in .filter(field__in=list) query	Barney Szabolcs	nobody	"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=my_values).raw(
    f'order by array_position(ARRAY[{ "","".join([""%s""]*len(my_values)) }]::varchar[], my_field)', 
    params=my_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)

**UPDATE:** 

now, I've found a cryptic solution:
https://stackoverflow.com/a/37648265/1031191

{{{
from django.db.models import Case, When

preserved = Case(*[When(my_field=val, then=pos) for pos, val in enumerate(my_values)])
queryset.filter(my_field__in=my_values).order_by(preserved)
}}}
I think Django should provide a better way than this.

Maybe {{{ queryset.filter(my_field__in_preserve=my_values) }}}"	Uncategorized	new	Uncategorized	2.2	Normal				Unreviewed	0	0	0	0	0	0
