【问题标题】:How to use OR using Django's model filter system?如何使用或使用 Django 的模型过滤系统?
【发布时间】: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”?我似乎无法在文档中找到它(奇怪的是,搜索“或”并不是真的有用)。

【问题讨论】:

    标签: python sql django


    【解决方案1】:

    你可以使用Q objects 来做你想做的事,通过按位或将它们组合在一起:

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

    【讨论】:

      猜你喜欢
      • 2020-03-06
      • 2020-08-10
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2012-06-29
      • 2022-06-24
      相关资源
      最近更新 更多