在django中的queryset中添加一个字段。

问题描述 投票:0回答:1

我有一个模型,其字段是datetimefields start_time和end_time,我想在API上显示start_time,end_time和它们之间的差异然而,我不想使用for或while循环来实现这一点,因为它太慢了,我可以在API上得到的差异,而不循环。

django django-rest-framework django-queryset
1个回答
1
投票

你可以用差值来注释查询集,然后使用 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_timestart_time.

© www.soinside.com 2019 - 2024. All rights reserved.