如何过滤大于或等于空?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何过滤大于或等于空?相关的知识,希望对你有一定的参考价值。

如果我想过滤 "大于或等于",我可以使用 gte:

MyModel.objects.filter(mydatetimefield__gte=mydate)

同样,如果我想过滤 "is nonenull",我可以使用 isnull:

MyModel.objects.filter(mydatetimefield__isnull=mydate)

我怎样才能把这些组合起来过滤 "大于或等于或为空",所以上面的过滤器会返回两个对象,如果i) mydatetimefield >= mydate(二) mydatetimefield == null?

答案

你使用 Q 语句来执行 OR 逻辑学

from django.db.models import Q

qry = Q(mydatetimefield=None) | Q(mydatetimefield__gte=mydate)

MyModel.objects.filter(qry)

根据Willem Van Onsems的精神,提出了另一个建议:

MyModel.objects.exclude(mydatetimefield__lt=mydate)
另一答案

您可以使用 Q 对象 [Django-doc],并使用位式或(|)运算符来指定一个条件,这个条件应该满足两个子条件中的一个。

from django.db.models import Q

MyModel.objects.filter(
    Q(mydatetimefield__gte=mydate) |
    Q(mydatetimefield=None)
)

或者你可以否定 __lt 查找。

from django.db.models import Q

MyModel.objects.filter(~Q(mydatetimefield__lt=mydate))

以上是关于如何过滤大于或等于空?的主要内容,如果未能解决你的问题,请参考以下文章

如何在vue js的过滤器搜索中添加大于等于的条件

如何找到小于或等于 X 的最大值和大于或等于 X 的最小值?

如何检查一个数字的每个数字是不是大于或等于另一个数字?

如果最长的表的长度大于或等于 5,如何将每个表的长度更改为等于最长的表?

MySQL WHERE语句筛选操作符

如何在 switch 语句中使用大于或等于