Maison  >  Article  >  base de données  >  Comment convertir un CharField en un entier dans les requêtes Django ORM ?

Comment convertir un CharField en un entier dans les requêtes Django ORM ?

DDD
DDDoriginal
2024-11-02 17:55:29750parcourir

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

Casting Char en Integer dans les requêtes Django ORM

Lors d'une requête avec Django Object-Relational Mapper (ORM), il peut être nécessaire de convertir un champ de caractère (CharField) à un entier. Ceci peut être réalisé en utilisant la fonction Cast, introduite dans Django 1.10.

Dans la requête donnée :

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

Le champ student_id, étant un CharField, doit être converti en un entier ( INT) pour le tri. Pour effectuer cette opération dans Django ORM, utilisez la syntaxe suivante :

<code class="python">from django.db.models import Cast
from django.db.models.functions import Cast

students.objects.annotate(
    student_id_int=Cast('student_id', 'INT')  # Casting CharField to integer
).order_by('-student_id_int')</code>

La fonction Cast prend deux arguments :

  • Le nom du champ à caster.
  • Le type de données vers lequel convertir le champ.

Dans cet exemple, nous convertissons le champ student_id en INT, le convertissant effectivement en un entier pour l'opération de tri. Cela permet un tri précis des résultats à l'aide de la clause order_by.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn