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 クエリのキャスト機能がないため、不一致が発生します。
キャスト関数の使用:
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>
Raw Query:
代わりに、Raw クエリを利用してキャストを実行できます:
<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 中国語 Web サイトの他の関連記事を参照してください。