Bagaimana untuk Menghantar CharField ke Integer dalam Django ORM?

DDD
Lepaskan: 2024-11-02 22:05:02
asal
992 orang telah melayarinya

How to Cast a CharField to an Integer in Django ORM?

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

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:

  • Selamat Jenis: Memastikan nilai yang terhasil adalah daripada jenis yang ditentukan.
  • Mengelakkan Pertanyaan Mentah: Menyimpan pertanyaan anda dalam ORM, memudahkan penyelenggaraan dan mengurangkan risiko suntikan SQL.
  • Cekap: Melakukan penghantaran dengan cekap pada peringkat pangkalan data.

Rujukan

Untuk mendapatkan maklumat lanjut tentang penghantaran dalam Django ORM, rujuk dokumentasi:

  • [Fungsi Pangkalan Data: Cast](https://docs.djangoproject.com/en/stable/ref/models/database- fungsi/#cast)

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!