2011-10-27 14 views
5

क्या कोई क्वेरीसेट का निरीक्षण करने और फ़िल्टर/बहिष्करण के बारे में जानकारी प्राप्त करने का कोई तरीका है?Django: लागू फ़िल्टर प्राप्त करने के लिए क्वेरीसेट का निरीक्षण करें

मैं डिबगिंग के लिए इसकी आवश्यकता है: मैं नहीं समझ सकता क्यों मेरे क्वेरीसमूह कुछ डेटा शामिल नहीं ...

+3

यदि आप पहले से नहीं हैं, तो एसक्यूएल कैसा दिखता है, यह देखने के लिए आप 'QuerySet.query' विधि का उपयोग कर सकते हैं। शायद वह मदद करेगा। –

उत्तर

6

यही करना आसान नहीं लगता है। प्रत्येक फ़िल्टर को क्वेरी ऑब्जेक्ट पर अलग-अलग लागू किया जाता है, इसलिए आपको साफ-सुथरा "filter1", "filter2", "filter3" नहीं मिल रहा है।

बाहर चेक myqueryset.query.__dict__ - भेजे फिल्टर संबंधित क्षेत्रों में तुरंत अलग किया जाता है और कोई रिकॉर्ड नहीं जमा हो जाती। django.db.models.sql.query.Query में विवरण।

मैं इसके बजाय एसक्यूएल की जांच करता हूं।

print myqueryset.query 
2

आप एक खोल में डीबगिंग रहे हैं:

from django.db import connection 
print connection.queries 

आप एक ब्राउज़र प्रयोग में अनुरोध कर रहे हैं, तो Django डिबग उपकरण पट्टी है, यह एक महान उपकरण है और बहुत उपयोगी हो सकते हैं:

Django Debug Toolbar