【问题标题】:OR operator in Django model queriesDjango 模型查询中的 OR 运算符
【发布时间】:2011-07-23 15:26:35
【问题描述】:

我正在尝试在 Django filter() 函数中使用 OR 运算符。现在我有

contactlist = Contact.objects.filter(last_name__icontains=request.POST['query'])

但我也想按名字搜索。例如:

contactlist = Contact.objects.filter(last_name__icontains=request.POST['query'] OR first_name__icontains=request.POST['query'])

有人知道怎么做吗?

【问题讨论】:

标签: django django-models django-queryset


【解决方案1】:

Q objects

from django.db.models import Q

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

【讨论】:

    【解决方案2】:
    result = Contact.objects.filter(last_name__icontains=request.POST['query']) | Contact.objects.filter(first_name__icontains=request.POST['query'])
    

    【讨论】:

    • 请在此处说明您要修复的内容。在 stackoverflow 上禁止仅发布没有摘要的代码引用。
    • 虽然我觉得这种语法会强制它计算两次,所以它会执行两个数据库查询而不是一个(如接受的答案所述)
    • 为了将来参考,此语法不会执行两个数据库查询。
    • 这会作为单个 SQL 请求执行吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2015-03-22
    相关资源
    最近更新 更多