मैं Django Rest Framework
के साथ निर्मित एपीआई पर काम कर रहा हूं। मैंने कई model
कक्षाओं को परिभाषित किया है और मैंने निर्दिष्ट api-endpoints
में होने वाली कुछ प्रश्नों पर लागू करने के लिए कुछ फ़िल्टर भी बनाए हैं।Django Rest फ़िल्टर के साथ क्वेरी परिणामों को सीमित करने के लिए कैसे करें
मैं queryset
में LIMIT लागू करने का प्रयास कर रहा हूं लेकिन मैं को Django नोटेशन e.x का उपयोग करना पसंद नहीं करूंगा। Entry.objects.all()[:5]
। इसके बजाय मैं मॉडल से जुड़े फ़िल्टर के अंदर से सीमा लागू करने में सक्षम होना चाहता हूं।
अब तक मुझे कोई समाधान नहीं मिला है। मैं सोच रहा हूं कि मुझे डिफॉल्ट वैल्यू वाले फ़िल्टर को परिभाषित करने का कोई तरीका ढूंढना चाहिए जिसके परिणामस्वरूप क्वेरीसेट को सीमित नहीं किया जा सकता है और यदि कोई अनुरोध एंडपॉइंट तक पहुंचता है और ?filter=10
जैसा कुछ होता है तो क्वेरीसेट पहले 10 तक सीमित होना चाहिए।
कि बहुत क्या मैं वास्तव में जरूरत के करीब है कर सकते हैं! हालांकि उस मामले में मैं 'LimitOffsetPagination' वर्ग को ओवरराइड करना चाहता हूं और पैरामीटर 'ऑफ़सेट' को डिफ़ॉल्ट मान (शायद 0) देना चाहता हूं ताकि उपयोगकर्ता को केवल 'सीमा' पैरामीटर निर्दिष्ट करना होगा। मैं 'PageNumberPagination' का उपयोग करने और डिफ़ॉल्ट मान 'सीमा' रखने के लिए' page_size_query_param' पैरामीटर को ओवरराइड करने के बारे में सोच रहा हूं। क्या यह उचित लगता है? – LetsPlayYahtzee
हां, यह एक अच्छा समाधान है। जैसा कि प्रलेखन में बताया गया है, क्लाइंट 'पृष्ठ_size_query_param'' का उपयोग क्लाइंट को अनुरोध पृष्ठ आकार को नियंत्रित करने की अनुमति देने के लिए किया जा सकता है। 'PageNumberPagination'' में यह param किसी के लिए डिफ़ॉल्ट के रूप में सेट नहीं है। –
यह मूर्खतापूर्ण लग सकता है, लेकिन मैं यह नहीं समझ सकता कि कस्टम पेजिनेशन क्लास कहां रखा जाए। – LetsPlayYahtzee