Expresión de Django F en objetos de fecha y hora

Mi modelo es:

class Test(): date1 = models.DateTimeField() date2 = models.DateTimeField() 

Puedo averiguar qué objetos date2 es mayor que date1 , utilizando la siguiente consulta:

 Test.obejcts.filter(date2__gt=F('date1')) 

Me gustaría encontrar todos los objetos cuya date2 sea ​​mayor que la date1 en un año.
¿Cómo puedo encontrar objetos basados ​​en la diferencia entre date1 y date2 ?

Solución general:

Puede annotate la diferencia de fecha y luego timedelta(days=365) el timedelta(days=365) (muy cerca de lo que @Anonymous sugiere en su comentario):

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

Solución específica de PostgreSQL:

Si está utilizando PostgreSQL , hay otra opción derivada de esta respuesta :

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