【问题标题】:How to use OR filter condition in queryset?如何在查询集中使用 OR 过滤条件?
【发布时间】:2018-06-18 01:38:36
【问题描述】:

如何在查询集中添加其他过滤条件?

一般情况下,我只能使用以下一种条件进行过滤:

queryset = PhysicalServerTask.objects.filter(task_status=TASK_STATUS.GOOD)

我们可以使用and 等其他条件进行过滤吗?

我想过滤tast_status等于TASK_STATUS.GOODTASK_STATUS.WELL

怎么办?

我知道我可以过滤TASK_STATUS.GOODTASK_STATUS.WELL,然后将它们合并。但是,如果有更好的方法来访问它?

【问题讨论】:

  • 我们不能只做PhysicalServerTask.objects.filter(task_status__in=[TASK_STATUS.GOOD, TASK_STATUS.WELL]) 吗?(关键字参数查询 - 在 filter() 等 - 被“与”在一起。如果您需要执行更复杂的查询(例如,带有 OR 语句的查询),您可以使用 Q 对象。)
  • 你不应该称之为 AND,它更像是 OR。
  • @wim 是的,是的。我的错误,我想写,或者,我头晕目眩。

标签: python django


【解决方案1】:

您可以为.filter 函数添加更多条件。应该是;

PhysicalServerTask.objects.filter(
task_status__in=[TASK_STATUS.GOOD, TASK_STATUS.WELL])

【讨论】:

  • 第一种方式行不通(不能在 Python 中两次指定相同的关键字参数)。第二种方式看起来不错。
猜你喜欢
  • 2020-02-21
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 2023-01-24
  • 2019-01-08
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多