"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment convertir des champs de caractères en entiers dans les requêtes Django ORM ?

Comment convertir des champs de caractères en entiers dans les requêtes Django ORM ?

Publié le 2024-11-13
Parcourir:611

How to Cast Character Fields to Integers in Django ORM Queries?

Casting Char en Integer dans les requêtes Django ORM

Dans Django ORM, la méthode filter() convertit automatiquement les champs de caractères en entiers lors de l'interrogation, ce qui facilite le filtrage des champs de caractères qui représentent des valeurs numériques. Cependant, si vous devez explicitement convertir un champ de caractères en un entier à des fins de classement ou à d'autres fins, Django propose plusieurs options.

Une approche consiste à utiliser la méthode __cast(), qui vous permet de convertir un champ en un entier. un type de données spécifique. Par exemple :

students.objects.filter(student_id__contains="97318").order_by('-student_id__cast(IntegerField)')

Une autre alternative consiste à utiliser annotate() méthode pour créer un nouveau champ converti en type de données souhaité. Cela peut être utile si vous devez utiliser le champ converti dans des requêtes ou des calculs ultérieurs :

from django.db.models import IntegerField, Cast

students = students.objects.annotate(
    student_id_int=Cast('student_id', IntegerField())
)
students.order_by('-student_id_int')

Enfin, pour des opérations de conversion plus complexes, vous pouvez utiliser les fonctions RawSQL() ou Extra() pour exécuter des requêtes SQL brutes qui incluent la conversion nécessaire. Cependant, cette approche n'est généralement pas recommandée pour les requêtes basées sur ORM, car elle peut entraîner des problèmes de performances et des vulnérabilités de sécurité.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3