如何使用Django的模型过滤器系统使用OR?

发布于 2021-01-29 15:20:03

似乎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”?我似乎在文档中找不到它(奇怪的是,搜索“或”并不是真正有用的)。

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用Q对象,将它们按位进行“或”运算以完成所需的操作:

    from django.db.models import Q
    Publisher.objects.filter(Q(name__contains="press") | Q(country__contains="U.S.A"))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看