In [11]: foo_ids = [101, 19, 75] In [12]: order_ids = ','.join(["{id}".format(id=id) for id in foo_ids]) In [13]: foos = Foo.objects.filter(id__in=foo_ids).extra(select={'order_ids': "FIELD(id, {})".format(order_ids)}, order_by=['order_ids']) In [14]: foos.values_list('id', flat=True) Out[14]: [101L, 19L, 75L]