У меня проблема с тем, что я хочу упорядочить строки модели в Django admin на основе числа в строке и игнорировать буквы - как XX0345XX, X0346XXX, XXX0347XX. Я думаю, что я должен использовать регулярное выражение для этого. У меня есть запрос SQL (PostgreSQL), который возвращает то, что я хочу:
select * from mytable order by substring(my_field, '\d+')::int DESC
Но у меня возникают проблемы с его применением, чтобы получить тот же результат в Django admin get_queryset()
. Я пытался сделать что-то вроде:
def get_queryset():
return Model.objects.raw("select * from mytable order by substring(my_field, '\d+')::int DESC")
, но проблема в том, что я не возвращаю правильный тип таким способом. Model.objects.raw('...')
возвращает RawQuerySet
, но get_queryset()
должен возвращать QuerySet
экземпляр, а не RawQuerySet
один, поэтому я не могу сделать это таким образом.
Есть предложения, как решить эту проблему? Спасибо!