django在order_by中使用Cast强制转换类型示例

265 阅读1分钟

在django中,如果遇到《mysql数字字符串排序问题(解决10和2的排序前后问题)》这种问题,就需要使用Cast进行排序,那么如何在django queryset中的order_by方法使用Cast,下面是示例:

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

...
queryset = queryset.order_by(Cast('number', IntegerField()))

另一种方式是可以使用extra方法:

...
queryset = queryset.extra(order_by=[Cast('number', IntegerField())])

参考资料: