Maison > Article > base de données > Comment convertir un CharField en un entier dans Django ORM ?
Casting Char Field en Integer dans Django ORM
Lors d'une requête avec Django ORM, vous pouvez rencontrer des scénarios dans lesquels vous devez convertir un champ de caractère à un entier. Cela peut survenir lorsque le champ est stocké en tant que CharField mais que vous souhaitez effectuer des calculs ou des comparaisons à l'aide de valeurs entières.
Pourquoi CAST n'est-il pas disponible ?
Dans les versions antérieures de Django, des requêtes SQL brutes ou des fonctions de base de données étaient nécessaires pour de tels scénarios. Cependant, avec l'introduction de la fonction Cast dans Django 1.10, vous pouvez réaliser ce casting dans l'ORM lui-même.
Utilisation de la fonction Cast
Pour lancer un CharField vers un entier, utilisez la syntaxe suivante :
<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>
Cela annotera l'ensemble de requêtes avec un nouveau champ appelé student_id_int, qui est converti en un type entier. Vous pouvez ensuite utiliser ce nouveau champ pour filtrer et trier comme vous le souhaitez.
Avantages de l'utilisation de Cast
L'utilisation de Cast offre plusieurs avantages :
Référence
Pour plus d'informations sur le casting dans Django ORM, reportez-vous à la documentation :
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!