Heim >Datenbank >MySQL-Tutorial >Wie konvertiere ich ein CharField in eine Ganzzahl in Django ORM-Abfragen?
In Django ORM können Sie auf Szenarien stoßen, in denen Sie ein CharField zu Abfragezwecken in eine Integer konvertieren müssen. Sehen wir uns die verfügbaren Optionen an:
Ursprüngliche Abfrage:
<code class="mysql">select student_id from students where student_id like "%97318%" order by CAST(student_id as UNSIGNED) desc;</code>
Standardabfrage:
<code class="python">students.objects.filter(student_id__contains="97318").order_by('-student_id')</code>
Diese Abfrage Es fehlt die Casting-Funktionalität der MySQL-Abfrage, was zu einer Nichtübereinstimmung führt.
Verwendung der Cast-Funktion:
Ab Django 1.10 ermöglicht die Cast-Funktion das Casting von Feldern in verschiedene Datentypen. In diesem Fall können Sie Folgendes verwenden:
<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>
Rohabfrage:
Alternativ können Sie eine Rohabfrage verwenden, um die Umwandlung zu erreichen:
<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>
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein CharField in eine Ganzzahl in Django ORM-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!