gpt4 book ai didi

python - Django注释中的日差

转载 作者:行者123 更新时间:2023-12-05 07:42:10 25 4
gpt4 key购买 nike

我想做一些等同于以下的事情:

MyModel.objects.all().annotate(
days_since_start = ExpressionWrapper(
(F(date) - start_date).days,
output_field=IntegerField()
)
)

当然,这是行不通的,因为 F(date) - start_date 以 SQL 结束,而 .days 行不通,因为它需要一个 timedelta 对象.

这个注释是否可以通过其他方式实现?我宁愿不从数据库中提取所有数据并逐行计算这个值。

最佳答案

我在 Postgres 上测试了这个解决方案:

MyModel.objects.annotate(
day_diff=Extract(
timezone.now() - F("start_date"),
lookup_name="epoch",
)
/ 86400
)

由于我们以秒为单位找到差异,因此也可以找到各种差异,例如小时、周、月等。

Extract 将 int 转换为结果,但是您可以将 output_field 设置为 FloatField 以获得更高的精度,例如,1.7 天而不是 2

关于python - Django注释中的日差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724163/

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