2012-09-17 24 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