How to filter objects with date > today or empty date from a Model in Django?

Question:

I need to select all model objects with date field greater than today date OR date field empty.

I have following code:

@login_required
def event_new(request, person_uuid=None):
    today = datetime.datetime.today()
    # valid_until may be empty
    profile = Profile.objects.filter(company=request.user.company,
                                     valid_until__gte=today)

I need to select all Profile objects with valid_until field empty or (if set) greater than today.

How can I achieve this?

Asked By: dease

||

Answers:

Use Q.

from django.db.models import Q

@login_required
def event_new(request, person_uuid=None):
    today = datetime.datetime.today()
    #valid_until may be empty
    profile = Profile.objects.filter(company=request.user.company).filter(Q(valid_until__gte=today)|Q(valid_until=None))
Answered By: falsetru