Django F expression on datetime objects

django, django-queryset, python, python-2.7

Solution

General Solution:

You can `annotate` the date difference and then check this against the `timedelta(days=365)` (pretty close to what @Anonymous suggests in his comment):

Test.objects.annotate(
    duration=F('date2') - F('date1')
).filter(duration__gt=timedelta(days=365))

PostgreSQL Specific Solution:

If you are using `PostgreSQL`, there is another option derived from this answer:

from django.db.models import F, Func

Test.objects.annotate(
    duration = Func(F('date2'), F('date1'), function='age')
).filter(duration__gt=timedelta(days=365))

Problem

My model is: ``` class Test(): date1 = models.DateTimeField() date2 = models.DateTimeField() ``` I can find out objects whose `date2` is greater than `date1`, using the following query: ``` Test.objects.filter(date2__gt=F('date1')) ``` I would like to find all the objects whose `date2` is greater than `date1` by one year. How can I find out objects based on difference between `date1` and `date2`?

Original source

Related problems