Django ORM 中将字符字段强制转换为整数
使用 Django ORM 查询时,可能会遇到需要强制转换字符字段的场景为一个整数。当字段存储为 CharField 但您想要使用整数值执行计算或比较时,可能会出现这种情况。
为什么 CAST 不可用?
在早期版本的对于这种情况,Django、原始 SQL 查询或数据库函数是必需的。然而,随着 Django 1.10 中引入 Cast 函数,您可以在 ORM 本身内实现此转换。
使用 Cast 函数
将 CharField 转换为整数,使用以下语法:
from django.db.models import Cast, IntegerField
students.objects.annotate(
student_id_int=Cast('student_id', IntegerField())
).filter(student_id_int__contains=97318).order_by('-student_id_int')
这将使用名为 Student_id_int 的新字段来注释查询集,该字段将转换为整数类型。然后,您可以根据需要使用这个新字段进行过滤和排序。
使用 Cast 的好处
使用 Cast 提供了多项好处:
参考
有关 Django ORM 中转换的更多信息,请参阅文档:
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3