如何在django F表达式中得到区间的绝对值?

如何在django F表达式中得到区间的绝对值?,django,Django,我试图按模型实例的当前日期和记录日期之间的日期差进行排序 以下是我目前为止的最佳选择,但“腹肌”部分不起作用 Support.objects.all().annotate( datediff=Func(ExpressionWrapper( F('end_at')-Now(), output_field=DurationField()), function='ABS') ).order_

我试图按模型实例的当前日期和记录日期之间的日期差进行排序

以下是我目前为止的最佳选择,但“腹肌”部分不起作用

Support.objects.all().annotate(
             datediff=Func(ExpressionWrapper(
                 F('end_at')-Now(),
                 output_field=DurationField()), function='ABS')
         ).order_by('datediff', 'id')
django.db.utils.ProgrammingError:函数abs(interval)不存在 存在

我也试过了

Support.objects.all().annotate(
             datediff=ExpressionWrapper(
                 Func(F('end_at')-Now(), function='ABS'),
                 output_field=DurationField())
         ).order_by('datediff', 'id')

有相同的错误。

对于排序,在您的情况下,它应该产生相同的顺序,就像简单地按
end\u在
进行排序一样。这也比计算所有行的持续时间,然后排序,然后只显示前n行要快得多。而是对前n行进行排序和显示,并仅计算这些行的持续时间(例如,通过templatetag)。