我的模型是:
class Test():
date1 = models.DateTimeField()
date2 = models.DateTimeField()
我可以使用以下查询找出date2
大于date1
的对象:Test.obejcts.filter(date2__gt=F('date1'))
我想找到date2
比date1
大一年的所有对象。如何根据
date1
和date2
之间的差异找出对象? 最佳答案
一般解决方案:
您可以annotate
日期差异,然后对照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/