Django ORM クエリの Char フィールドを整数にキャストする
Django のオブジェクト リレーショナル マッピング (ORM) を使用してデータベースをクエリする場合、次のようになります。比較または並べ替えの目的で CharField を整数にキャストするために必要です。 CharField はデフォルトで文字列として保存されるため、これは問題となる可能性があります。
この課題を克服する 1 つのアプローチは、contains 引数を指定して Django ORM の filter() メソッドを使用することです。ただし、このメソッドは文字列の一致のみをチェックします。
ORM 内でキャストを実現するために、Django はフィールドを別のデータ型に変換できる Cast 関数を提供します。この関数は Django バージョン 1.10 で導入されました。
<code class="python">from django.db.models import FloatField from django.db.models.functions import Cast # Assuming 'student_id' is a CharField students = Student.objects.annotate( converted_student_id=Cast('student_id', FloatField()) ).filter(converted_student_id__contains="97318").order_by('-converted_student_id')</code>
この更新されたアプローチでは、Cast 関数が Student_id CharField を FloatField に変換し、文字列値ではなく数値での比較と並べ替えを可能にします。これにより、データをクエリするためのより効率的かつ正確な方法が提供されます。
以上がDjango ORM クエリのために CharField を整数にキャストする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。