Django 模型查询中的 OR 运算符

Posted

技术标签:

【中文标题】Django 模型查询中的 OR 运算符【英文标题】:OR operator in Django model queries 【发布时间】: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 Filters - or? 的可能重复项 【参考方案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'])

【讨论】:

请在此处说明您要修复的内容。在 *** 上禁止仅发布没有摘要的代码引用。 虽然我觉得这种语法会强制它计算两次,所以它会执行两个数据库查询而不是一个(如接受的答案所述) 为了将来参考,此语法不会执行两个数据库查询。 这会作为单个 SQL 请求执行吗?

以上是关于Django 模型查询中的 OR 运算符的主要内容,如果未能解决你的问题,请参考以下文章

Django 数据库基本查询方法

Django 数据库操作

Django 查询问题

django框架的基础知识点《叁》

这里有 Django ORM 中的 in 运算符吗? [复制]

python中的管道/联合运算符[重复]