2009-11-28 14 views
7

मैं है निम्न फ़िल्टर क्वेरी जो एक SQL या बयान कर रही है से निपटने के लिए कैसे:"कोई नहीं" Django में डीबी मूल्यों प्रश्नों

results = Stores.objects.filter(Q(title__icontains=prefs.address1) | Q(title__icontains=prefs.address2)) 

यह ठीक काम करता है, लेकिन अगर prefs.address1 और prefs.address2 मूल्यों (जो एक और मॉडल से आते हैं) mySQL में रिक्त हैं, Django निम्न त्रुटि के साथ शिकायत:

Cannot use None as a query value

वहाँ अगर मेरे फ़िल्टर मान या फ़िल्टर क्वेरी से निर्माण करने से पहले खाली नहीं कर रहे हैं देखने के लिए जाँच करने के लिए एक सुंदर तरीका है?

बहुत धन्यवाद।

उत्तर

10

आप इस जो आसानी से अधिक प्रश्नों

query = Q() 
for search in (prefs.address1, prefs.address2): 
    if search: 
     query |= Q(title__icontains=search) 
results = Stores.objects.filter(query) 
+0

ओह यह भी अच्छा है। धन्यवाद। – givp

3

यह?

thefilter = Q(title__icontains=prefs.address1) 
if prefs.address2 is not None: 
    thefilter = thefilter | Q(title__icontains=prefs.address2) 
results = Stores.objects.filter(thefilter) 
+0

प्रधान को generalisable है कर सकता है। धन्यवाद। n00b प्रश्न के लिए खेद है :) – givp

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