Django Queryset absolute value of the annotated fi

2019-07-06 11:03发布

问题:

How do I get the absolute value of the annotated field? I tried the code below but it did't work.

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

Error:

TypeError: bad operand type for abs(): 'CombinedExpression'

Thanks in advance!

回答1:

You can try with func expressions:

from django.db.models import Func, F

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