我的模型是:
class Test():
date1 = models.DateTimeField()
date2 = models.DateTimeField()
我可以使用以下查询找出 date2
大于 date1
的对象:
Test.objects.filter(date2__gt=F('date1'))
我想找出date2
比date1
大一年的所有对象。
如何根据 date1
和 date2
之间的差异找出对象?
最佳答案
一般解决方案:
您可以注释
日期差异,然后对照timedelta(days=365)
进行检查(与@Anonymous 在他的评论中建议的非常接近):
Test.objects.annotate(
duration=F('date2') - F('date1')
).filter(duration__gt=timedelta(days=365))
PostgreSQL 特定解决方案:
如果您使用的是 PostgreSQL
,则还有一个派生自 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))
关于python - 日期时间对象上的 Django F 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43890131/