Есть ли способ разыграть, только если это возможно
Вы можете попробовать использовать extra :
self.object_list.extra(
where=[
"ISNUMERIC(my_field) = 1"
]
).annotate(
order_field=Cast('my_field', IntegerField())
).order_by('order_field')
Это решит ваши ( 2) требование и чтобы выполнить (1), вы можете использовать тот же запрос с изменением where
на select
(см. Документы), чтобы комментировать что-то вроде флага is_numeric
, а затем упорядочить по order_field
и is_numeric
.