Django ORM 쿼리에서 Char를 정수로 변환
Django ORM에서 filter() 메서드는 쿼리하는 동안 자동으로 문자 필드를 정수로 변환합니다. 숫자 값을 나타내는 문자 필드를 쉽게 필터링할 수 있습니다. 그러나 순서 지정이나 다른 목적을 위해 문자 필드를 정수로 명시적으로 변환해야 하는 경우 Django는 여러 옵션을 제공합니다.
한 가지 접근 방식은 __cast() 메서드를 사용하는 것입니다. 특정 데이터 유형. 예:
students.objects.filter(student_id__contains="97318").order_by('-student_id__cast(IntegerField)')
또 다른 대안은 annotate()를 사용하는 것입니다. 원하는 데이터 유형으로 캐스팅되는 새 필드를 만드는 방법입니다. 이는 후속 쿼리 또는 계산에서 캐스팅된 필드를 사용해야 하는 경우 유용할 수 있습니다.
from django.db.models import IntegerField, Cast
students = students.objects.annotate(
student_id_int=Cast('student_id', IntegerField())
)
students.order_by('-student_id_int')
마지막으로 더 복잡한 캐스팅 작업의 경우 RawSQL() 또는 Extra() 함수를 사용하여 필요한 캐스팅을 포함하는 원시 SQL 쿼리를 실행할 수 있습니다. 그러나 이 접근 방식은 성능 문제 및 보안 취약성을 초래할 수 있으므로 일반적으로 ORM 기반 쿼리에는 권장되지 않습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3