Search code examples
djangodjango-queryset

Django Queryset absolute value of the annotated field


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!


Solution

  • 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'))