Django Academy · पाठ

जटिल फ़िल्टर के लिए Q Objects

AND, OR और NOT से शर्तों को संयोजित करें

पाठ 3, कुल 4 में से13 चरण

जटिल फ़िल्टर के लिए Q Objects, CoddyKit पर Django Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Django Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Django Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

साधारण filter() से आगे

filter में कीवर्ड तर्कों को एक साथ रखने का अर्थ हमेशा AND होता है। OR या NOT व्यक्त करने के लिए आपको अधिक सक्षम टूल चाहिए।

Q ऑब्जेक्ट से परिचय

Q ऑब्जेक्ट किसी शर्त को लपेटता है, ताकि आप एक ही क्वेरी के भीतर बूलियन ऑपरेटरों से कई शर्तें जोड़ सकें।

from django.db.models import Q

पाइप से OR

दो Q ऑब्जेक्ट को पाइप ऑपरेटर से जोड़कर OR बनाएँ। इससे वे पंक्तियाँ मिलती हैं जो किसी एक शर्त को पूरा करती हैं।

Book.objects.filter(Q(title__icontains="django") | Q(title__icontains="flask"))

एम्परसैंड से AND

एम्परसैंड Q ऑब्जेक्ट को AND से जोड़ता है। यह तब उपयोगी है जब साधारण कीवर्ड जोड़ने के बजाय स्पष्ट समूह बनाना हो।

Book.objects.filter(Q(price__lt=20) & Q(in_stock=True))

टिल्ड से निषेध

NOT व्यक्त करने के लिए Q ऑब्जेक्ट के आगे टिल्ड लगाएँ। इससे वे सभी पंक्तियाँ मिलती हैं जो शर्त को पूरा नहीं करतीं।

Book.objects.filter(~Q(author__name="Anon"))

Q और कीवर्ड को मिलाना

आप Q ऑब्जेक्ट और साधारण कीवर्ड तर्क एक साथ दे सकते हैं, लेकिन हर स्थितीय Q को किसी भी कीवर्ड से पहले रखना आवश्यक है।

Book.objects.filter(Q(price__lt=20) | Q(on_sale=True), in_stock=True)

कोष्ठकों से समूह बनाना

प्राथमिकता नियंत्रित करने के लिए संयुक्त Q ऑब्जेक्ट को कोष्ठकों में रखें, ठीक वैसे ही जैसे कच्चे SQL में शर्तों का समूह बनाया जाता है।

Book.objects.filter((Q(a=1) | Q(b=2)) & Q(c=3))

फ़िल्टर गतिशील रूप से बनाएँ

Q ऑब्जेक्ट मान होते हैं, इसलिए आप filter में परिणाम देने से पहले उन्हें Python में शर्त के आधार पर बना सकते हैं।

q = Q(active=True)
if term:
    q &= Q(name__icontains=term)
User.objects.filter(q)

reduce से कई को मिलाएँ

किसी शब्द-सूची पर OR चाहिए? उन्हें operator.or_ से क्रमशः जोड़कर एक संयुक्त Q बनाएँ।

from functools import reduce
import operator
reduce(operator.or_, [Q(tag=t) for t in tags])

फिर भी एक SQL क्वेरी

तर्क कितना भी जटिल हो, Django आपके Q ट्री को एक ही WHERE खंड में संकलित करता है, इसलिए कोई अतिरिक्त आवागमन नहीं होता।

Q का उपयोग कब करें

जब किसी फ़िल्टर में OR, NOT या रनटाइम पर बनाया गया तर्क चाहिए, तब Q का उपयोग करें; साधारण AND के लिए सामान्य कीवर्ड पर्याप्त हैं।

त्वरित जाँच

आप ऐसी पुस्तकें चाहते हैं जिनके शीर्षक में django या flask हो। कौन-सा filter यह व्यक्त करता है?

पुनरावलोकन

Q ऑब्जेक्ट आपको OR, AND और NOT तर्क को समूहित करके गतिशील रूप से बनाने देते हैं, और यह सब एक ही क्वेरी में संकलित होता है। 🧩

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “जटिल फ़िल्टर के लिए Q Objects” पाठ निःशुल्क है?

हाँ — Django Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “जटिल फ़िल्टर के लिए Q Objects” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Django Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“जटिल फ़िल्टर के लिए Q Objects” में मैं क्या सीखूँगा?

AND, OR और NOT से शर्तों को संयोजित करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Django Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Django Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Django Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“जटिल फ़िल्टर के लिए Q Objects” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Django Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Django Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. aggregate बनाम annotate
  2. परमाणु अपडेट के लिए F Expressions
  3. जटिल फ़िल्टर के लिए Q Objects
  4. Case/When से सशर्त एकत्रीकरण
← Django Academy पर वापस जाएँ