Django Queryset注解字段的绝对值

cedebl8k  于 2023-03-24  发布在  Go
关注(0)|答案(2)|浏览(176)

如何获取带注解字段的绝对值?我尝试了下面的代码,但它不起作用。

queryset.annotate(relevance=abs(F('capacity') - int( request.GET['capacity']) ) ).order_by('relevance')

错误:

TypeError: bad operand type for abs(): 'CombinedExpression'
先谢了!

pgky5nke

pgky5nke1#

你可以尝试使用func表达式:

from django.db.models import Func, F

queryset.annotate(relevance=Func(F('capacity') - int(request.GET['capacity']), function='ABS'))
6mzjoqzu

6mzjoqzu2#

使用你自己的django函数,你可以

from django.db.models.expressions import Func, Value

class ABS(Func):
    
    function = "ABS"

queryset.annotate(relevance=ABS(F('capacity') - Value(int(request.GET['capacity']))))

相关问题