2012-09-17 57 views
0

嗨,我想在django查詢中使用OR操作符。我的代碼如下所示:在Django查詢中使用OR操作

hotels = models.Hotel.objects.filter(
     wed=True, 
     county=hotel_main.county.id, 
     (x=True)|(y=True)|(z=True), 
     subscriptions__end_date__gte=datetime.date.today(), 
     subscriptions__enquiry_count__lte=F('subscriptions__tier__enquiry_limit'), 
    ).distinct() 

我試圖獲取一條記錄,其中至少有一個上述x,y,z爲真。 任何幫助......謝謝

+0

可能重複[?Django的過濾器 - 或(http://stackoverflow.com/questions/739776/django-filters-or) – e100

回答

2

你將不得不使用Q對象。事情是這樣的:

hotels = models.Hotel.objects.filter(
    wed=True, 
    county=hotel_main.county.id, 
    subscriptions__end_date__gte=datetime.date.today(), 
    subscriptions__enquiry_count__lte=F('subscriptions__tier__enquiry_limit')).filter(Q(x=True) | Q(y=True) | Q(z=True)).distinct() 
2

Q objects

Contact.objects.filter(Q(last_name__icontains=request.POST['query']) | 
          Q(first_name__icontains=request.POST['query'])) 

REF:OR operator in Django model queries

+0

這兩個答案是正確的,但是這一次使用的引用所以應該接受 – Jharwood

+0

是的,把你的Q語句移到最後 –

+0

@Jharwood上面的答案也是用參考的..呵呵,關於Q – karthikr