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

Barbara Streisand
풀어 주다: 2024-11-03 12:34:30
원래의
1048명이 탐색했습니다.

How to Convert a CharField to an Integer in Django ORM Queries?

Django ORM 쿼리에서 Char를 정수로 변환

Django ORM에서는 쿼리 목적으로 CharField를 정수로 변환해야 하는 시나리오가 발생할 수 있습니다. 사용 가능한 옵션을 살펴보겠습니다.

원래 쿼리:

<code class="mysql">select student_id from students where student_id like "%97318%" order by CAST(student_id as UNSIGNED) desc;</code>
로그인 후 복사

표준 쿼리:

<code class="python">students.objects.filter(student_id__contains="97318").order_by('-student_id')</code>
로그인 후 복사

이 쿼리 MySQL 쿼리의 캐스팅 기능이 부족하여 불일치가 발생합니다.

Cast 함수 사용:

Django 1.10부터 Cast 함수를 사용하면 필드를 다음으로 캐스팅할 수 있습니다. 다양한 데이터 유형. 이 경우 다음을 사용할 수 있습니다.

<code class="python">from django.db.models import FloatField
from django.db.models.functions import Cast

students.objects.annotate(student_id_int=Cast('student_id', FloatField()))\
    .filter(student_id__contains="97318").order_by('-student_id_int')</code>
로그인 후 복사

원시 쿼리:

대안으로 원시 쿼리를 활용하여 캐스팅을 수행할 수 있습니다.

<code class="python">from django.db import connection

cursor = connection.cursor()
cursor.execute("""
    SELECT student_id
    FROM students
    WHERE student_id LIKE '%%97318%%'
    ORDER BY CAST(student_id AS UNSIGNED) DESC
""")
student_ids = cursor.fetchall()</code>
로그인 후 복사

위 내용은 Django ORM 쿼리에서 CharField를 정수로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿