【问题标题】:Using OR operation in Django query在 Django 查询中使用 OR 操作
【发布时间】:2012-09-09 18:57:08
【问题描述】:

您好,我正在尝试在 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 之一的记录。 任何帮助...谢谢您

【问题讨论】:

标签: django


【解决方案1】:

Q objects

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

参考号:OR operator in Django model queries

【讨论】:

  • 两个答案都是正确的,但是这个使用了引用,所以应该被接受
  • 是的,把你的 Q 语句移到最后
  • @Jharwood 上面的答案也使用了参考 .. Hower over Q
  • 哦,不明显是链接
【解决方案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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2012-10-14
    • 2021-11-14
    • 1970-01-01
    • 2015-10-06
    • 2010-09-26
    相关资源
    最近更新 更多