Conversão de campo Char para inteiro no Django ORM
Ao consultar com Django ORM, você pode encontrar cenários em que precisa converter um campo de personagem para um número inteiro. Isso pode surgir quando o campo é armazenado como um CharField, mas você deseja realizar cálculos ou comparações usando valores inteiros.
Por que CAST não está disponível?
Em versões anteriores do Django, consultas SQL brutas ou funções de banco de dados eram necessárias para tais cenários. No entanto, com a introdução da função Cast no Django 1.10, você pode conseguir essa conversão dentro do próprio ORM.
Usando a função Cast
Para lançar um CharField para um inteiro, use a seguinte sintaxe:
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')
Isso anotará o conjunto de consultas com um novo campo chamado student_id_int, que é convertido em um tipo inteiro. Você pode então usar esse novo campo para filtrar e ordenar conforme desejado.
Benefícios do uso do Cast
O uso do Cast oferece vários benefícios:
Referência
Para mais informações sobre casting no Django ORM, consulte o documentação:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3