फ़िल्टर करें और डेटा सॉर्ट करें
आप डेटा को फ़िल्टर करने के लिए निम्नलिखित तरीकों का उपयोग कर सकते हैं (SQL WHERE clause).
-
filter(*args, **kwargs) -> QuerySet -
exclude(*args, **kwargs) -> QuerySet -
प्राप्त करें (*Args, *\ * kwargs) -> नमूना
-
get_or_none(*args, **kwargs) -> Optional[Model] -
get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool] -
all(*args, **kwargs) -> List[Optional[Model]] -
क्वेरी सेट एजेंट
QuerysetProxy.filter(*args, **kwargs)विधिQuerysetProxy.exclude(*args, **kwargs)विधिQuerysetProxy.get(*args, **kwargs)विधिQuerysetProxy.get_or_none(*args, **kwargs)विधिQuerysetProxy.get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs)विधिQuerysetProxy.all(*args, **kwargs)विधि
और निम्नलिखित विधि का उपयोग करके डेटा को सॉर्ट करें (SQL क्रमबद्ध करना by close).
order_by(columns:Union[List, str, OrderAction]) -> QuerySet- क्वेरी सेट एजेंट
QuerysetProxy.order_by(columns:Union[List, str, OrderAction])विधि
फिल्टर
फिल्टर
filter(*args, **kwargs) -> QuerySet
आपको किसी भी नमूना विशेषता/फ़ील्ड द्वारा फ़िल्टर करने और FK संबंधों में फ़िल्टर का उपयोग करके उदाहरण प्राप्त करने की अनुमति देता है।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
Django- शैली फिल्टर
आप फ़िल्टर ऑपरेंड को बदलने के लिए एक विशेष फ़िल्टर प्रत्यय का उपयोग कर सकते हैं:
- सटीक - मूल्य के लिए सटीक मैच, sql कॉलम =
\ * एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम _\ _ सटीक = 'मालिबू' - I- सटीक मैच sql कॉलम =
(Not case sensitive) - एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम _\ _ i= 'मालिबू'
- शामिल करें-sql कॉलम LIKE '%
% '* को एल्बम _\ के रूप में लिखा जा सकता है_नाम _\ _ में = 'माल' है - I-sql कॉलम LIKE '%
% ' (case insensed) \ * को एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम _\ _ आइकन = 'माल' - -sql में
column IN (<VALUE1>, <VALUE2>, ...)\ * के रूप में लिखा जा सकता हैalbum__name__in=['Malibu', 'Barclay'] - null - sql कॉलम Nहै (और sql कॉलम NL नहीं है)
- एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम __null = सच (isnotnull एल्बम __नाम _\ _ isnull = गलत)
- Gt - sql कॉलम>
(Greater than) \ * स्थिति \ _ \ _ gt = 3 के रूप में लिखा जा सकता है - Gte - sql कॉलम> =
(ग्रेटर से या के बराबर से अधिक) \ * स्थिति \ _ \ _ gte = 3 के रूप में लिखा जा सकता है - लेफ्टिनेंट - sql कॉलम <
(नीचे) \ * स्थिति \ _ \ _ lt = 3 के रूप में लिखा जा सकता है - Lte - sql कॉलम <=
(कम या के बराबर में)* स्थिति के रूप में लिखा जा सकता है __lte = 3 - स्टार्टविथ - sql कॉलम LIKE '
% ' (exactive start match) \ * को एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम _\ _ शुरुआत = 'माल' - Itswith - sql कॉलम LIKE '
% ' (केस असंवेदनशील) \ * के रूप में लिखा जा सकता है album__name__istartswith='mal' - Endswith - sql कॉलम LIKE '%
' (exact end match) \ * एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम _\ _ endswith = 'ibu' - Iendswith - sql कॉलम LIKE '%
' (case insensed) \ * को एल्बम \ _ \ के रूप में लिखा जा सकता है_नाम _\ _ iendswith = 'IBU'
कुछ नमूने:
1 2 3 4 5 6 7 8 9 10 11 | |
पायथन-शैली फिल्टर
- सटीक - मूल्य के लिए सटीक मैच, sql कॉलम =
- Track.album.name के रूप में लिखा जा सकता है
- I- सटीक मैच sql कॉलम =
(Not case sensitive) - के रूप में लिखा जा सकता है
Track.album.name.iexact('malibu')
- के रूप में लिखा जा सकता है
- शामिल करें-sql कॉलम LIKE '%
% '* Track.album.name के रूप में लिखा जा सकता है) * के रूप में लिखा जा सकता है Track.album.name.contains('Mal') - I-sql कॉलम LIKE '%
% ' (केस असंवेदनशील) \ * के रूप में लिखा जा सकता है Track.album.name.icontains('mal') - -sql में
column IN (<VALUE1>, <VALUE2>, ...)* के रूप में लिखा जा सकता हैTrack.album.name << ['Malibu', 'Barclay']* के रूप में लिखा जा सकता हैTrack.album.name.in_(['Malibu', 'Barclay']) - null - sql कॉलम IS NL (और sql कॉलम IS T NULL) * के रूप में लिखा जा सकता Track.album.name >> कोई नहीं * के रूप में लिखा जा सकता Track.album.name isnull (True) * के रूप में शून्य नहीं लिखा जा सकता है
Track.album.name.isnull(False)* शून्य को ~ के रूप में नहीं लिखा जा सकता Track.album.name (>> Noone) \ * शून्य के रूप में नहीं लिखा जा सकता है~(Track.album.name.isnull(True)) - Gt - sql कॉलम>
(Greater than) \ * को Track.album.name लिखा जा सकता है> 3 - Gte - sql कॉलम> =
(ग्रेटर से या के बराबर के रूप में लिखा जा सकता Track.album.name = 3 - लेफ्टिनेंट - sql कॉलम <
(नीचे) \ * Track.album.name के रूप में लिखा जा सकता है <3 - Lte - sql कॉलम <=
(कम या के बराबर के रूप में लिखा जा सकता Track.album.name <= 3 - स्टार्टविथ - sql कॉलम LIKE '
% ' (except start match) \ * के रूप में लिखा जा सकता है Track.album.name.startswith('Mal') - Itswith - sql कॉलम LIKE '
% ' (केस असंवेदनशील) \ * के रूप में लिखा जा सकता है Track.album.name.istartswith('mal') - Endswith - sql कॉलम LIKE '%
' (exact end match) \ * के रूप में लिखा जा सकता है Track.album.name.endswith('ibu') - Iendswith - sql कॉलम LIKE '%
' (केस असंवेदनशील) \ * के रूप में लिखा जा सकता है Track.album.name.iendswith('IBU')
कुछ नमूने:
1 2 3 4 5 6 7 8 9 10 11 | |
!!!ध्यान दें कि सभी विधियां जो पंक्तियों को वापस नहीं करती हैं, स्पष्ट रूप से एक Queryउदाहरण लौटाती हैं ताकि आप उन्हें एक साथ लिंक कर सकें
1 2 3 | |
!!!चेतावनी, कृपया ध्यान दें कि आपको इसमें और अन्य फ़िल्टर में % वाइल्ड-कार्ड निर्दिष्ट करने की आवश्यकता नहीं है, यह आपके लिए जोड़ा गया है। यदि आप खोज मान में % शामिल करते हैं, तो यह बच जाएगा और पाठ के भीतर शाब्दिक प्रतिशत संकेत के रूप में माना जाएगा।
बाहर
exclude(*args, **kwargs) -> QuerySet
यह फ़िल्टर के समान ही काम करता है, और सभी संशोधक (प्रत्यय) समान हैं, लेकिन स्थिति वापस नहीं आती है।
इसलिए यदि आप फ़िल्टर का उपयोग करते हैं (name = 'John'), जो के बराबर है जहां नाम = SQL में 'जॉन', फिर सिवाय (name = 'John') के बराबर है जहां नाम <> 'जॉन'।
कृपया ध्यान दें कि सभी शर्तें संक्षिप्त हैं, इसलिए यदि आप कई मूल्यों को पारित करते हैं, तो यह शर्तों का संघ बन जाता है।
बहिष्करण (नाम = 'जॉन', उम्र> = 35) बन जाता है where not (name='John' and age>=35)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
जटिल फिल्टर (including OR)
डिफ़ॉल्ट रूप से, दोनों फ़िल्टर () and except () mएथोड्स प्रदान किए गए फ़िल्टर विकल्पों को शर्त के साथ जोड़ते हैं ताकि filter(name="John", age__gt=30) में अनुवाद करें WHERE name = 'John' AND age > 30 ...
कभी-कभी उन स्थितियों का उपयोग करके डेटाबेस को क्वेरी करना उपयोगी होता है जिन्हें संयुक्त रूप से लागू नहीं किया जाना चाहिए, जैसे कि WHERE name = 'John' OR age > 30 या एक जटिल जहां क्वेरी का निर्माण करें जिसे आप अधिक नियंत्रण चाहते हैं। आखिरकार WHERE (name = 'John' OR age > 30) and city='New York' से पूरी तरह से अलग है WHERE name = 'John' OR (age > 30 and city='New York') ...
OR और नेस्टेड स्थितियों का निर्माण करने के लिए, mar दो कार्य प्रदान करता है जिनका उपयोग फ़िल्टर में किया जा सकता है () and except () Queryऔर QueryProमें।
!!!ध्यान दें कि आप इन विधियों को किसी अन्य विधि में प्रदान कर सकते हैं जो \ * arको स्वीकार करता है, जैसे कि प्राप्त करें () or all ().
हाँ या _ और _ कॉल को एक दूसरे के भीतर नेस्टेड किया जा सकता है या कीवर्ड तर्कों के साथ जोड़ा जा सकता है। चूंकि यह वास्तव में अधिक जटिल लगता है, आइए कुछ उदाहरणों को देखें।
इस तरह नमूना एक उदाहरण को देखते हुए:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
आइए कुछ उदाहरण डेटा बनाएं:
1 2 3 4 5 6 7 | |
हम कुछ उदाहरण जटिल प्रश्नों का निर्माण कर सकते हैं:
आइए 1970 के बाद लिखी गई टॉल्किन की पुस्तकों या पुस्तकों का चयन करें
SQL: WHERE ( authors.name = 'J.R.R. Tolkien' OR books.year > 1970 )
Django शैली
1 2 3 4 5 6 | |
अजगर शैली
1 2 3 4 5 6 | |
अब आइए 1960 के बाद या 1940 से पहले टोल्किन द्वारा लिखी गई पुस्तकों का चयन करें।
SQL: WHERE ( books.year > 1960 OR books.year < 1940 ) AND authors.name = 'J.R.R. Tolkien'
Django शैली
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | |
अजगर शैली
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | |
2000 से पहले सैपकोव्स्की की किताबें या 1960 के बाद टॉल्किन की किताबें
SQL: WHERE ( ( books.year > 1960 AND authors.name = 'J.R.R. Tolkien' ) OR ( books.year < 2000 AND authors.name = 'Andrzej Sapkowski' ) )
Django शैली
1 2 3 4 5 6 7 8 9 10 11 | |
अजगर शैली
1 2 3 4 5 6 7 8 9 | |
बेशक, इन कार्यों में से अधिक दो शर्तें हो सकती हैं, इसलिए यदि हम ऐसी किताबें चाहते हैं जिनमें "हॉबिट" शामिल हैं:
SQL: WHERE ( ( books.year > 1960 AND authors.name = 'J.R.R. Tolkien' ) OR ( books.year < 2000 AND os0cec_authors.name = 'Andrzej Sapkowski' ) OR books.title LIKE '%hobbit%' )
Django शैली
1 2 3 4 5 6 7 8 9 10 11 | |
अजगर शैली
1 2 3 4 5 6 7 8 9 | |
यदि आप चाहते हैं या आवश्यकता है, तो आप आवश्यकतानुसार गहरी परिस्थितियों को घोंसला बना सकते हैं, जैसे कि निम्नलिखित क्वेरी को लागू करना:
SQL:
1 2 3 | |
आप क्वेरी को निम्नानुसार संरचना कर सकते हैं:
Django शैली
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
अजगर शैली
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |
अब आपको समझना चाहिए कि ormar.or _और ormar.and _कैसे काम करते हैं। बेशक, आप उन्हें क्वेरी सेट में किसी भी अन्य तरीके से लिंक कर सकते हैं, इसलिए उदाहरण में, एक पूरी तरह से मान्य क्वेरी इस तरह दिख सकती है:
1 2 3 4 5 6 7 8 9 10 11 | |
यह पायथन-शैली लिंकिंग और घोंसले के शिकार पर भी लागू होता है।
Django शैली
कृपया ध्यान दें कि Django शैली के साथ, आप एक ही कीवर्ड तर्क कई बार प्रदान नहीं कर सकते हैं, इसलिए filter(ormar.or_(name='Jack', name='John')) को निम्नानुसार क्वेरी करने की अनुमति नहीं है। यदि आप एक ही कॉलम के लिए कई मानों की जांच करना चाहते हैं, तो बस ऑपरेटर में उपयोग करें:filter(name__in=['Jack','John'])।
यदि केवल या _ या और _ यदि कोई फ़ंक्शन एक पैरामीटर पास करता है, तो यह केवल कोष्ठक में संलग्न है और वास्तविक क्वेरी पर कोई प्रभाव नहीं पड़ता है, इसलिए सभी तीन प्रश्न अंत में समान हैं:
1 2 3 | |
!!!नोट या _ और _ क्वेरी में ERE होगा (title = 'द हॉबिट'), लेकिन कोष्ठक निरर्थक हैं और इसका कोई व्यावहारिक प्रभाव नहीं है।
यदि आपको वास्तव में दो बार एक ही फ़ील्ड नाम का उपयोग करने की आवश्यकता है, तो आप इस सुविधा का उपयोग कर सकते हैं। याद रखें कि आप एक ही कीवर्ड तर्क को दो बार फ़ंक्शन में पास नहीं कर सकते हैं, इसलिए उदाहरण में क्वेरी कैसे करें WHERE (authors.name LIKE '%tolkien%') OR (authors.name LIKE '%sapkowski%')) ?
आप ऐसा नहीं कर सकते।
1 2 3 4 5 6 7 8 | |
लेकिन आप ऐसा कर सकते हैं:
1 2 3 4 5 6 7 8 9 | |
अजगर शैली
कृपया ध्यान दें कि पायथन शैली के साथ, आप आवश्यक रूप से कई बार एक ही क्षेत्र का उपयोग कर सकते हैं।
1 2 3 4 5 6 7 8 | |
प्राप्त करें
प्राप्त करें (*Args, *\ * kwargs) -> नमूना
डेटाबेस से पहली पंक्ति प्राप्त करता है जो kwarसेट स्थितियों को संतुष्ट करता है।
किसी भी arऔर / या kwarपारित करते समय, यह कॉलिंग फिल्टर के बराबर है (*Args, *\ * kwargs).गेट () शॉर्टकट
!!!टिप फ़िल्टर के बारे में अधिक जानने के लिए, फ़िल्टर पर जाएं।
1 | |
जाओ या कुछ नहीं
यह ठीक वैसा ही है जैसा ऊपर वर्णित है, लेकिन यदि मानदंडों से मेल खाने वाला कोई डेटाबेस रिकॉर्ड नहीं पाया जाता है, तो किसी अपवाद को फेंकने के बजाय कोई भी वापस नहीं किया जाता है।
प्राप्त करें या बनाएं
get_or_create(_defaults: Optional[Dict[str, Any]] = None, *args, **kwargs) -> Tuple[Model, bool]
विधियों का एक संयोजन बनाएं और प्राप्त करें।
किसी भी arऔर / या kwarपास करते समय, यह शॉर्टकट को कॉल करने के बराबर है filter(*args, **kwargs).get_or_create()
!!!टिप फ़िल्टर के बारे में अधिक जानने के लिए, फ़िल्टर पर जाएं।
1 | |
!!!चेतावनी जब कोई दिया गया आइटम मौजूद नहीं होता है, तो आपको नमूना के सभी आवश्यक क्षेत्रों के लिए kwarपास करने की आवश्यकता होती है, जिसमें प्राथमिक \ _ कुंजी कॉलम तक सीमित नहीं है (जब तक कि यह ऑटो-इन्क्रीमेंटिंग न हो)।
सभी
all(*args, **kwargs) -> List[Optional["Model"]]
सेट फ़िल्टर विकल्प के लिए, दिए गए नमूना के लिए डेटाबेस में सभी पंक्तियों को लौटाता है।
किसी भी kwarको पास करते समय, यह कॉलिंग फ़िल्टर के बराबर है (*Args, *Kwargs के लिए शॉर्टकट).all ()
!!!टिप फ़िल्टर के बारे में अधिक जानने के लिए, फ़िल्टर पर जाएं।
1 | |
QueryProविधि
प्रासंगिक MToफ़ील्ड और seसीधे एक्सेस करते समय, संबंधित मॉडल की एक सूची वापस आ जाती है।
लेकिन यह क्वेरीसेट एपीआई के एक सबसेट को भी उजागर करता है, इसलिए आप मूल नमूना से सीधे संबंधित मॉडल को फ़िल्टर कर सकते हैं, बना सकते हैं, चुन सकते हैं।
फिल्टर
ऊपर के रूप में एक ही फ़िल्टरिंग फ़ंक्शन, लेकिन आपको रिश्ते के दूसरे छोर से संबंधित वस्तुओं को फ़िल्टर करने की अनुमति देता है।
!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं
बाहर
बहिष्करण फ़ंक्शन बिल्कुल ऊपर के समान है, लेकिन आपको रिश्ते के दूसरी तरफ से संबंधित वस्तुओं को फ़िल्टर करने की अनुमति देता है।
!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं
प्राप्त करें
ऊपर दिए गए फ़ंक्शन के समान है, लेकिन आपको रिश्ते के दूसरे छोर से संबंधित वस्तुओं को फ़िल्टर करने की अनुमति देता है।
!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं
जाओ या कुछ नहीं
यह ठीक वैसा ही है जैसा ऊपर वर्णित है, लेकिन यदि मानदंडों से मेल खाने वाला कोई डेटाबेस रिकॉर्ड नहीं पाया जाता है, तो किसी अपवाद को फेंकने के बजाय कोई भी वापस नहीं किया जाता है।
प्राप्त करें या बनाएं
वास्तव में ऊपर दिए गए फ़ंक्शन को प्राप्त करने के समान है, लेकिन आपको संबंध के दूसरे छोर से संबंधित वस्तुओं को फ़िल्टर करने की अनुमति देता है।
!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं
सभी
उपरोक्त सभी के समान है, लेकिन आपको रिश्ते के दूसरी तरफ से संबंधित वस्तुओं को फ़िल्टर करने की अनुमति देता है।
!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं
सॉर्ट करें
आदेश आधार
order_by(columns: Union[List, str, OrderAction]) -> QuerySet
क्रमबद्ध करना का उपयोग करके \ _ by (), आप अपने द्वारा चुने गए फ़ील्ड द्वारा डेटाबेस में परिणामों को सॉर्ट कर सकते हैं।
आप फ़ील्ड नामों के साथ एक स्ट्रिंग या विभिन्न फ़ील्ड के साथ स्ट्रिंग्स की सूची प्रदान कर सकते हैं।
SQL में सॉर्ट करना आपके द्वारा _ में प्रदान किए गए नामों के क्रमबद्ध करना क्रमबद्ध करना में लागू किया जाता है।
!!!टिप डिफ़ॉल्ट रूप से, यदि आप सभी प्राथमिक कुंजियों द्वारा छँटाई या स्पष्ट रूप से सॉर्ट प्रदान नहीं करते हैं
!!!चेतावनी: यदि आप नेस्टेड मॉडल द्वारा सॉर्ट करते हैं, तो परिणामी पंक्तियों को मुख्य नमूना द्वारा सॉर्ट नहीं किया जाता है, अन्यथा विवाह इन बाल पंक्तियों को एक मुख्य नमूना में विलय कर देगा।
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
नमूना दिया गया उदाहरण इस प्रकार है:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | |
मास्टर नमूना द्वारा सॉर्ट करने के लिए, बस फ़ील्ड नाम प्रदान करें
Django शैली
1 2 3 4 5 6 | |
अजगर शैली
1 2 3 4 5 6 | |
नेस्टेड मॉडल को सॉर्ट करने के लिए, डंडर का उपयोग करें '__'अलग क्षेत्र के नाम।
आप सभी संबंध प्रकारों को सॉर्ट कर सकते हैं -> ForeignKey, रिवर्स वर्चुअल FK, और MToफ़ील्ड इस तरह से।
Django शैली
1 2 3 4 | |
अजगर शैली
1 2 3 4 | |
अवरोही क्रमबद्ध करना में सॉर्ट करने के लिए, फ़ील्ड नाम से पहले एक हाइफ़न प्रदान करें
Django शैली
1 2 3 4 5 6 7 8 | |
अजगर शैली
1 2 3 4 5 6 7 8 | |
!!!ध्यान दें कि सभी विधियां जो पंक्तियों को वापस नहीं करती हैं, स्पष्ट रूप से एक Queryउदाहरण लौटाती हैं ताकि आप उन्हें एक साथ लिंक कर सकें
1 2 3 | |
ओमार में डिफ़ॉल्ट छँटाई
चूंकि डेटाबेस में पंक्तियों की क्रमबद्ध करना की गारंटी नहीं दी जा सकती है, ऑर्मर हमेशा प्रत्येक (आंशिक) क्वेरी के लिए sql क्लॉज द्वारा एक क्रमबद्ध करना जारी करता है, भले ही आप स्वयं क्रमबद्ध करना प्रदान न करें।
डिफ़ॉल्ट रूप से, किसी दिए गए नमूना के साथ डेटाबेस को क्वेरी करते समय, मॉडल प्राथमिक \ _ कुंजी स्तंभों द्वारा आरोही क्रमबद्ध करना में सॉर्ट किए जाते हैं। यदि आप डिफ़ॉल्ट व्यवहार को बदलना चाहते हैं, तो आप आदेश \ _ पैरामीटर द्वारा ormar \ _ config की आपूर्ति करके ऐसा कर सकते हैं।
!!! टिप नमूना सॉर्टिंग क्रमबद्ध करना के बारे में अधिक जानने के लिए, प्रलेखन के मॉडल अनुभाग पर जाएं
डिफ़ॉल्ट रूप से, रिश्ते समान क्रमबद्ध करना का पालन करते हैं, लेकिन आप उस क्रमबद्ध करना को संशोधित कर सकते हैं जिसमें संबंधित मॉडल किसी क्वेरी के दौरान ऑर्डर \ _ बाय और संबंधित \ _ ऑर्डर \ _ मापदंडों के साथ संबंध की आपूर्ति करके लोड किए जाते हैं।
!!! टिप नमूना छँटाई क्रमबद्ध करना के बारे में अधिक पढ़ने के लिए, दस्तावेज़ के संबंध अनुभाग पर जाएँ
आदेश \ _ द्वारा खंड निम्नलिखित क्रमबद्ध करना में लागू किए जाते हैं:
- क्वेरी में क्रमबद्ध करना \ _ by () कॉल को स्पष्ट रूप से पास करें
- आदेशों द्वारा संबंध \ _ by और संबंधित \ _ आदेश \ _ by (if present)
- मॉडल ormar \ _ कॉन्फिग ऑब्जेक्ट ऑर्डर \ _ by
- आरोही क्रमबद्ध करना में मॉडल का प्राथमिक \ _ कुंजी कॉलम (फॉलबैक, यदि उपरोक्त में से कोई भी प्रदान नहीं किया गया है तो उपयोग किया जाता है)
प्रत्येक नमूना में केवल एक स्रोत से ऑर्डर लागू करें (ताकि आप इसे हमेशा एक ही क्वेरी में ओवरराइड कर सकें)।
यह माध्य है कि यदि आप क्वेरी में दिए गए लिंक के लिए एक स्पष्ट क्रमबद्ध करना नमूना के लिए एक स्पष्ट विवरण प्रदान करते हैं, तो संबंध और नमूना क्रमबद्ध करना छोड़ दिया जाएगा।
यदि आप संबंध एक प्रदान करते हैं, तो नमूना आदेश देना छोड़ दिया जाता है।
अंत में, यदि आप एक मॉडल प्रदान करते हैं, तो प्राथमिक \ _ कुंजी के लिए डिफ़ॉल्ट मान छोड़ दिया जाता है।
QueryProविधि
प्रासंगिक MToफ़ील्ड और seसीधे एक्सेस करते समय, संबंधित मॉडल की एक सूची वापस आ जाती है।
लेकिन यह क्वेरीसेट एपीआई के एक सबसेट को भी उजागर करता है, इसलिए आप मूल नमूना से सीधे संबंधित मॉडल को फ़िल्टर कर सकते हैं, बना सकते हैं, चुन सकते हैं।
आदेश आधार
वास्तव में ऊपर दिए गए फ़ंक्शन द्वारा क्रमबद्ध करना \ _ के समान है, लेकिन आपको संबंध के दूसरी तरफ से संबंधित वस्तुओं को सॉर्ट करने की अनुमति देता है।
!!!QueryProके बारे में अधिक जानने के लिए, QueryProअनुभाग पर जाएं