Django

【Django】order_byでCastを使う方法

django

文字のフィールドを、数字で並べ替えするときに、「1,2,3,4,10」と並んでほしいのに、文字のために「1,10,2,3,4」となってしまいます。
SQLだとCastを利用しますが、DjangoでもCastが使えましたので構文を残しておきます。

必要なモジュール

from django.db.models import IntegerField
from django.db.models.functions import Cast

object操作
フィールド名は「fieldA」で文字列のフィールドとなっています。
数字に変えてソートします。

xxxx.objects.all().order_by(Cast('fieldA',output_field=IntegerField()))