How to include an annotate field in filter Django?

1

I'm trying to make a filter with the field total_clasificacion , but It gives me the following error.

  

NameError: name total_classification is not defined

listado_facturas = Clasificacion.objects.filter(
    Q(factura__cliente=1)&
    Q(factura__trafico__tipo_operacion=1)&
    Q(factura__trafico__modal=1) &
    Q(factura__trafico__fecha_cruce=None))\
.order_by().values('factura__valor_factura','factura__id')\
.annotate(total_clasificacion = Sum('total'))\
.filter(factura__valor_factura=total_clasificacion)

print(listado_facturas)

How can I refer to the total_clasificacion field within filter ?

    
asked by Alexander Morales 14.09.2016 в 17:44
source

1 answer

1

Try the feature F() :

from django.db.models import F
listado_facturas = Clasificacion.objects.filter(
    Q(factura__cliente=1)&
    Q(factura__trafico__tipo_operacion=1)&
    Q(factura__trafico__modal=1) &
    Q(factura__trafico__fecha_cruce=None))\
.order_by().values('factura__valor_factura','factura__id')\
.annotate(total_clasificacion = Sum('total'))\
.filter(factura__valor_factura=F('total_clasificacion'))

print(listado_facturas)
    
answered by 14.09.2016 / 18:01
source