2011-09-17 16 views
9

Django में, आप की तरह डेटाबेस प्रश्नों बना सकते हैं:Django के डबल अंडरस्कोर

Model.objects.filter(name__icontains = 'bob') 

सवाल यह है: यह कैसे काम कर रहे 'आड़' है? क्या डबल डेंगो चीज़ या पाइथन चीज़ अंडरस्कोर है? क्या यह सिर्फ एक ही चर है जिसे name__icontains नाम दिया गया है, या यह किसी प्रकार का विशेषता-पहुंच वाक्यविन्यास है? पूर्व मामले में, filter विधि वैरिएबल नाम को कैसे निर्धारित करती है यह निर्धारित करने के लिए कि आप Model तालिका को उस नाम के लिए खोज रहे हैं जो कहीं स्ट्रिंग bob है?

उत्तर

12

यह एक Django चीज है, जो कुछ पायथन चीजों के साथ लागू होती है।

अजगर में, आप एक समारोह या विधि के लिए पारित कीवर्ड तर्क का एक शब्दकोश प्राप्त कर सकते हैं:

>>> def func(*args, **kwargs): 
...  print(kwargs) 
>>> func(a=1, b=2) 
{'a': 1, 'b': 2} 

वहाँ से, यह केवल शब्दकोश चाबियाँ पर पुनरावृति और उन्हें __ पर विभाजित कर सकते हैं, और उसके बाद की व्याख्या हालांकि यह चाहता है। इस मामले में, यह अंतिम भाग लेता है और icontains को केस-असंवेदनशील के रूप में व्याख्या करता है।

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