Hi!

What I am trying to do is filtering using queryset, get a value when 
verified is true. It works fine when:
mano_obra = 
HoraHojaTrabajo.objects.values('literal__proyecto__id_proyecto').annotate(
 cantidad_horas=ExpressionWrapper(Sum((F('cantidad_minutos') / 60)),
 output_field=DecimalField(max_digits=4)),
 costo_total=ExpressionWrapper(
 Sum((F('cantidad_minutos') / 60) * (F('hoja__tasa__costo') / 
F('hoja__tasa__nro_horas_mes'))),
 output_field=DecimalField(max_digits=4))
).filter(
 literal__proyecto__id_proyecto=OuterRef('id_proyecto')
)
qs = Proyecto.objects.prefetch_related(
 'mis_literales'
).annotate(costo_mano_obra=Subquery(mano_obra.values('costo_total')),
 cantidad_horas_mano_obra=Subquery(mano_obra.values('cantidad_horas')))


but later, when I add in the filter (verificado=True)

mano_obra = HoraHojaTrabajo.objects.values('literal__proyecto__id_proyecto'
).annotate(
 cantidad_horas=ExpressionWrapper(Sum((F('cantidad_minutos') / 60)),
 output_field=DecimalField(max_digits=4)),
 costo_total=ExpressionWrapper(
 Sum((F('cantidad_minutos') / 60) * (F('hoja__tasa__costo') / F(
'hoja__tasa__nro_horas_mes'))),
 output_field=DecimalField(max_digits=4))
).filter(
 literal__proyecto__id_proyecto=OuterRef('id_proyecto'),
 verificado=True
)
qs = Proyecto.objects.prefetch_related(
 'mis_literales'
).annotate(costo_mano_obra=Subquery(mano_obra.values('costo_total')),
 cantidad_horas_mano_obra=Subquery(mano_obra.values('cantidad_horas')))

and I got the following message:


Request Method: GET
Request URL: http://127.0.0.1:8000/api/proyectos/
Django Version: 2.0.1
Exception Type: FieldError
Exception Value: 

Expression contains mixed types. You must set output_field.

Exception Location: 
/Users/fabioandresgarciasanchez/PycharmProjects/virtualenv/proyectos_intranet_env/lib/python3.6/site-packages/django/db/models/expressions.py
 
in _resolve_output_field, line 298
Python Executable: 
/Users/fabioandresgarciasanchez/PycharmProjects/virtualenv/proyectos_intranet_env/bin/python
Python Version: 3.6.3


How can I get this working?

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/6dbf3cc6-6941-4cc8-bffd-b31105b872e2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to