2010-07-02 8 views
27

ऐसा लगता है कि Django की ऑब्जेक्ट मॉडल फ़िल्टर विधि स्वचालित रूप से और SQL कीवर्ड का उपयोग करती है।Django के मॉडल फ़िल्टर सिस्टम का उपयोग या उपयोग कैसे करें?

उदाहरण के लिए:

>>> Publisher.objects.filter(name__contains="press", country__contains="U.S.A") 

स्वचालित रूप से की तरह कुछ में अनुवाद होगा:

SELECT ... 
FROM publisher 
WHERE name LIKE '%press%' 
AND country LIKE '%U.S.A.%' 

हालांकि, मैं सोच रहा था कि क्या वहाँ है कि 'और' एक 'या' बनाने के लिए एक तरह से किया गया था? मुझे प्रलेखन में यह प्रतीत नहीं होता है (विचित्र रूप से पर्याप्त, 'या' खोजना वास्तव में उपयोगी नहीं है)।

उत्तर

52

आप आप क्या चाहते हैं, बिटवाइज़ द्वारा या-इंग उन्हें एक साथ करने के लिए Q objects उपयोग कर सकते हैं:

from django.db.models import Q 
Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A")) 
+0

धन्यवाद! ऐसा लगता है कि यह चाल करना चाहिए। – Simon

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