我有一个模型,其字段是datetimefields start_time和end_time,我想在API上显示start_time,end_time和它们之间的差异然而,我不想使用for或while循环来实现这一点,因为它太慢了,我可以在API上得到的差异,而不循环。
你可以用差值来注释查询集,然后使用 ExpressionWrapper
将其转换为 DurationField
,从而得到 timedelta
对象。
from django.db.models import DurationField, ExpressionWrapper, F
MyModel.objects.annotate(
time_diff=ExpressionWrapper(
F('end_time')-F('start_time'),
output_field=DurationField()
)
)
该 MyModel
引起的 这个 因此,queryset将有一个额外的属性。time_diff
那是 timedelta
字段,其中包含 end_time
和 start_time
.