如何过滤大于或等于空?
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))
以上是关于如何过滤大于或等于空?的主要内容,如果未能解决你的问题,请参考以下文章
如何找到小于或等于 X 的最大值和大于或等于 X 的最小值?