"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Django ORM 쿼리에서 문자 필드를 정수로 변환하는 방법은 무엇입니까?

Django ORM 쿼리에서 문자 필드를 정수로 변환하는 방법은 무엇입니까?

2024년 11월 13일에 게시됨
검색:623

How to Cast Character Fields to Integers in Django ORM Queries?

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