Convertir campo Char a entero en Django ORM
Al realizar consultas con Django ORM, puede encontrar escenarios en los que necesite convertir un campo de carácter a un número entero. Esto puede surgir cuando el campo está almacenado como CharField pero desea realizar cálculos o comparaciones utilizando valores enteros.
¿Por qué CAST no está disponible?
En versiones anteriores de Para tales escenarios eran necesarios Django, consultas SQL sin formato o funciones de base de datos. Sin embargo, con la introducción de la función Cast en Django 1.10, puedes lograr esta conversión dentro del propio ORM.
Usar la función Cast
Para convertir un CharField a un entero, use la siguiente sintaxis:
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')
Esto anotará el conjunto de consultas con un nuevo campo llamado Student_id_int, que se convierte a un tipo entero. Luego puedes usar este nuevo campo para filtrar y ordenar como desees.
Beneficios de usar Cast
Usar Cast proporciona varios beneficios:
Referencia
Para obtener más información sobre la conversión en Django ORM, consulte la documentación:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3