Django选择查询时差

cha*_*sie 2 django django-models django-queryset

我正在尝试在django中查询数据库表,其中包括以下各列:

id | start_time | end_time
Run Code Online (Sandbox Code Playgroud)

我可以直接在查询中获得差异,而不是分别为两者获取单独的值吗?达到此效果的方法:

SELECT id, Diff(start_time, end_time) FROM myTable
Run Code Online (Sandbox Code Playgroud)

sol*_*oke 5

这可以完全通过Django 1.10及更高版本中的ORM完成。使用这样的模型:

class Timer(models.Model)

    start_time = models.DateTimeField()
    end_time = models.DateTimeField()
Run Code Online (Sandbox Code Playgroud)

您可以使用以下持续时间注释对象:

from django.db.models import DurationField, ExpressionWrapper, F

Timer.objects.annotate(duration=ExpressionWrapper(F('end_time') - F('start_time'),
                                                  output_field=DurationField()))
Run Code Online (Sandbox Code Playgroud)