Menghantar Medan Char kepada Integer dalam Django ORM
Apabila membuat pertanyaan dengan Django ORM, anda mungkin menghadapi senario di mana anda perlu menghantar medan aksara kepada integer. Ini boleh timbul apabila medan disimpan sebagai CharField tetapi anda ingin melakukan pengiraan atau perbandingan menggunakan nilai integer.
Mengapa CAST Tidak Tersedia?
Dalam versi terdahulu Django, pertanyaan SQL mentah atau fungsi pangkalan data diperlukan untuk senario sedemikian. Walau bagaimanapun, dengan pengenalan fungsi Cast dalam Django 1.10, anda boleh mencapai penghantaran ini dalam ORM itu sendiri.
Menggunakan Fungsi Cast
Untuk menghantar CharField ke integer, gunakan sintaks berikut:
<code class="python">from django.db.models import Cast, IntegerField students.objects.annotate( student_id_int=Cast('student_id', IntegerField()) ).filter(student_id_int__contains=97318).order_by('-student_id_int')</code>
Ini akan menganotasi set pertanyaan dengan medan baharu dipanggil student_id_int, yang dihantar kepada jenis integer. Anda kemudian boleh menggunakan medan baharu ini untuk menapis dan memesan seperti yang dikehendaki.
Faedah Menggunakan Cast
Menggunakan Cast memberikan beberapa faedah:
Rujukan
Untuk mendapatkan maklumat lanjut tentang penghantaran dalam Django ORM, rujuk dokumentasi:
Atas ialah kandungan terperinci Bagaimana untuk Menghantar CharField ke Integer dalam Django ORM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!