如何过滤大于或为null?

ali*_*s51 4 python django django-models

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

MyModel.objects.filter(mydatetimefield__gte=mydate)
Run Code Online (Sandbox Code Playgroud)

同样,如果我想过滤“is none/null”,我可以使用isnull

MyModel.objects.filter(mydatetimefield__isnull=mydate)
Run Code Online (Sandbox Code Playgroud)

如何组合这些来过滤“大于或等于或为空”,以便上述过滤器将返回两个对象(如果 i)mydatetimefield >= mydate和 ii) mydatetimefield == null

Jor*_*ley 6

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

from django.db.models import Q

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

MyModel.objects.filter(qry)
Run Code Online (Sandbox Code Playgroud)

符合 Willem Van Onsems 替代建议的精神

MyModel.objects.exclude(mydatetimefield__lt=mydate)
Run Code Online (Sandbox Code Playgroud)