2011-01-13 12 views
26

जब मैं ऐसा करते हैंडीजेन्गो क्वेरीसेट क्या है?

>>> b = Blog.objects.all() 
>>> b 

मैं इस

>>>[<Blog: Blog Title>,<Blog: Blog Tile>] 

जब मैं क्वेरी किस प्रकार ख है,

>>> type(b) 

मैं इस

>>> <class 'django.db.models.query.QuerySet'> 

क्या मिल पाने के इसका मतलब ? क्या यह डेटा प्रकार जैसे dict, list आदि है?

एक उदाहरण है कि मैं क्वेरी संरचना जैसे डेटा संरचना कैसे बना सकता हूं, इसकी सराहना की जाएगी।

मुझे पता है कि कैसे Django निर्माण चाहेगा कि क्वेरीसमूह (रक्तमय विवरण)

गत।

+1

आप Django के स्रोत कोड को देखो रक्तमय विवरण देखने के लिए कर सकते हैं। इसके अलावा, एक क्वेरीसेट केवल एक वस्तु है जो कई अन्य लोगों की तरह होती है जो कभी-कभी किसी सूची की तरह व्यवहार करती हैं। –

+0

इसके लिए क्या है: http://docs.djangoproject.com/en/dev/ref/models/querysets/ यह कैसे काम करता है, जैसा कि पहले से ही उल्लेख किया गया है, स्रोत कोड पर एक नज़र डालें। –

+0

यह क्यों कम किया गया था? – Davy8

उत्तर

25

django queryset अपने नाम की तरह है, मूल रूप से print b.query से ऊपर आपके उदाहरण में, आपके डीजेंगो filter कॉल से उत्पन्न एसक्यूएल क्वेरी दिखाएगा।

के बाद से क्वेरीसमूहों lazy कर रहे हैं, डेटाबेस क्वेरी तुरंत नहीं किया है, लेकिन केवल जब जरूरत - जब क्वेरीसमूह का मूल्यांकन है। यह उदाहरण के लिए होता है यदि आप इसे प्रिंट करते समय __str__ विधि को कॉल करते हैं, तो यदि आप list() पर कॉल करेंगे, या, अधिकतर क्या होता है, तो आप इसे (for post in b..) पर फिर से चालू करते हैं। इस आलस्य से आपको अनावश्यक प्रश्नों से बचाने के लिए बचाया जाना चाहिए और उदाहरण के लिए आपको क्वेरी क्वेरीसेट्स और फिल्टर की अनुमति भी मिलती है (आप एक क्वेरीसेट को जितनी बार चाहें फ़िल्टर कर सकते हैं)।

1

एक क्वेरीसेट आपके डेटाबेस से ऑब्जेक्ट्स का संग्रह प्रस्तुत करता है। इसमें शून्य, एक या कई फ़िल्टर हो सकते हैं। फ़िल्टर दिए गए मानकों के आधार पर क्वेरी परिणामों को संकुचित करते हैं। SQL शब्दों में, एक क्वेरीसेट एक SELECT कथन के बराबर होती है, और फ़िल्टर एक सीमित खंड है जैसे WHERE या LIMIT।

https://docs.djangoproject.com/en/1.8/topics/db/queries/

संबंधित मुद्दे