在 Django 中向查询集添加一个字段

Adding a field to queryset in django

我有一个模型,其字段是日期时间字段 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(
        <b>F('end_time')-F('start_time')</b>,
        output_field=DurationField()
    )
)

这个查询集产生的MyModels将因此有一个额外的属性time_diff,即包含差异的timedelta字段在 end_timestart_time 之间。