如何使用或使用 Django 的模型过滤系统?
Posted
技术标签:
【中文标题】如何使用或使用 Django 的模型过滤系统?【英文标题】:How to use OR using Django's model filter system? 【发布时间】:2011-03-11 03:07:29 【问题描述】:似乎 Django 的对象模型过滤方法自动使用了 AND SQL 关键字。
例如:
>>> Publisher.objects.filter(name__contains="press", country__contains="U.S.A")
会自动翻译成:
SELECT ...
FROM publisher
WHERE name LIKE '%press%'
AND country LIKE '%U.S.A.%'
但是,我想知道是否有办法将“AND”变成“OR”?我似乎无法在文档中找到它(奇怪的是,搜索“或”并不是真的有用)。
【问题讨论】:
【参考方案1】:你可以使用Q objects 来做你想做的事,通过按位或将它们组合在一起:
from django.db.models import Q
Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A"))
【讨论】:
以上是关于如何使用或使用 Django 的模型过滤系统?的主要内容,如果未能解决你的问题,请参考以下文章
如何过滤 Django QuerySet 的相关字段“全部”或“无”
如何在不定义内容类型或模型的情况下使用 Django 权限?