gpt4 book ai didi

python - 日期时间对象上的 Django F 表达式

转载 作者:太空狗 更新时间:2023-10-30 00:59:13 25 4
gpt4 key购买 nike

我的模型是:

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

我可以使用以下查询找出 date2 大于 date1 的对象:

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

我想找出date2date1 大一年的所有对象。
如何根据 date1date2 之间的差异找出对象?

最佳答案

一般解决方案:

您可以注释日期差异,然后对照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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com