Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menukar CharField kepada Integer dalam Pertanyaan ORM Django?

Bagaimana untuk Menukar CharField kepada Integer dalam Pertanyaan ORM Django?

Barbara Streisand
Lepaskan: 2024-11-03 12:34:30
asal
1101 orang telah melayarinya

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

Menghantar Char kepada Integer dalam Django ORM Pertanyaan

Dalam Django ORM, anda mungkin menghadapi senario di mana anda perlu menukar CharField kepada integer untuk tujuan pertanyaan. Mari terokai pilihan yang tersedia:

Pertanyaan Asal:

<code class="mysql">select student_id from students where student_id like "%97318%" order by CAST(student_id as UNSIGNED) desc;</code>
Salin selepas log masuk

Pertanyaan Standard:

<code class="python">students.objects.filter(student_id__contains="97318").order_by('-student_id')</code>
Salin selepas log masuk

Pertanyaan ini tidak mempunyai fungsi pemutus pertanyaan MySQL, mengakibatkan ketidakpadanan.

Menggunakan Fungsi Cast:

Dari Django 1.10 dan seterusnya, fungsi Cast membolehkan penghantaran medan untuk pelbagai jenis data. Dalam kes ini, anda boleh menggunakan:

<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>
Salin selepas log masuk

Pertanyaan Mentah:

Sebagai alternatif, anda boleh menggunakan pertanyaan mentah untuk mencapai pemutus:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menukar CharField kepada Integer dalam Pertanyaan ORM Django?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan