Heim >Datenbank >MySQL-Tutorial >Wie konvertiere ich ein CharField in eine Ganzzahl in Django ORM-Abfragen?

Wie konvertiere ich ein CharField in eine Ganzzahl in Django ORM-Abfragen?

Barbara Streisand
Barbara StreisandOriginal
2024-11-03 12:34:301101Durchsuche

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

Umwandeln von Char in Integer 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn