2009-11-28 20 views
7

Bir SQL VEYA deyimi aşağıdaki filtre sorgusu yapıyor hangi sorguları nasıl çözülür?:"Yok" Django DB değerleri

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

Bu iyi çalışır ancak prefs.address1 ve prefs.address2 değerlerinin ise (başka modelden geldiği) mySQL boş Django aşağıdaki hata ile yakınır:

Cannot use None as a query value

benim filtre değerleri VEYA filtre sorgusuyla oluşturmadan önce boş değil olup olmadığını görmek için kontrol etmek zarif bir yolu var mı?

Çok teşekkürler.

cevap

10

Daha sorgular

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

oh bu daha da güzel. teşekkür ederim. – givp

3

Bu?

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

kaymakam kolayca genellenebilir olan bu yapabilirdi. teşekkür ederim. n00b soru için üzgünüm :) – givp

İlgili konular