我有一个具有Booking
日期时间字段的模型。我想知道预订涵盖多少天。我可以在 Python 中做到这一点,但我需要这个值来做进一步的注释。start
end
这是我尝试过的:
In [1]: Booking.objects.annotate(days=F('end')-F('start'))[0].days
Out[1]: datetime.timedelta(16, 50400)
这里有几个问题:
- 我想要一个整数(或我可以在计算中使用的其他数字类型)作为输出,而不是 timedelta。设置 output_field 在这里没有任何意义。
- 我的总和是基于日期时间的。像这样的减法,不删除时间可能会导致整个天数被关闭。
在 Python 中,我会做(end.date() - start.date()).days + 1
. 我怎样才能在数据库中做到这一点,最好是通过 ORM(例如数据库函数),但RawSQL
足以让它走出门外?