Приведение символьного поля к целому числу в Django ORM
При запросе с помощью Django ORM вы можете столкнуться со сценариями, в которых вам нужно привести символьное поле до целого числа. Это может произойти, если поле хранится как CharField, но вы хотите выполнить вычисления или сравнения с использованием целочисленных значений.
Почему CAST недоступен?
В более ранних версиях Для таких сценариев были необходимы Django, необработанные SQL-запросы или функции базы данных. Однако с появлением функции Cast в Django 1.10 вы можете добиться такого приведения внутри самого 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