"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > Django ORM क्वेरीज़ में कैरेक्टर फ़ील्ड्स को पूर्णांकों में कैसे कास्ट करें?

Django ORM क्वेरीज़ में कैरेक्टर फ़ील्ड्स को पूर्णांकों में कैसे कास्ट करें?

2024-11-13 को प्रकाशित
ब्राउज़ करें:242

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

Django ORM क्वेरीज़ में चार को पूर्णांक में कास्ट करना

Django ORM में, फ़िल्टर() विधि स्वचालित रूप से क्वेरी करते समय वर्ण फ़ील्ड को पूर्णांक में परिवर्तित करती है, संख्यात्मक मानों का प्रतिनिधित्व करने वाले वर्ण फ़ील्ड को फ़िल्टर करना आसान बनाता है। हालाँकि, यदि आपको ऑर्डर देने या अन्य उद्देश्यों के लिए किसी वर्ण फ़ील्ड को पूर्णांक में स्पष्ट रूप से डालने की आवश्यकता है, तो Django कई विकल्प प्रदान करता है।

एक दृष्टिकोण __cast() विधि का उपयोग करना है, जो आपको फ़ील्ड को पूर्णांक में डालने की अनुमति देता है एक विशिष्ट डेटा प्रकार. उदाहरण के लिए:

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

एक अन्य विकल्प एनोटेट() का उपयोग करना है एक नया फ़ील्ड बनाने की विधि जिसे वांछित डेटा प्रकार में डाला जाता है। यह उपयोगी हो सकता है यदि आपको बाद के प्रश्नों या गणनाओं में कास्ट फ़ील्ड का उपयोग करने की आवश्यकता है:

from django.db.models import IntegerField, Cast

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

अंत में, अधिक जटिल कास्टिंग संचालन के लिए, आप कच्चे SQL क्वेरी को निष्पादित करने के लिए rawSQL() या Extra() फ़ंक्शन का उपयोग कर सकते हैं जिसमें आवश्यक कास्टिंग शामिल है। हालाँकि, यह दृष्टिकोण आमतौर पर ORM-आधारित प्रश्नों के लिए अनुशंसित नहीं है, क्योंकि इससे प्रदर्शन संबंधी समस्याएं और सुरक्षा कमजोरियां हो सकती हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3