{{{
# one query update
related_machinery =
ActivityTracking.objects.filter(machinery=OuterRef('pk')).values('machinery')
sub_total =
related_machinery.annotate(Sum('measure_value')).values('measure_value__sum')
avg_total =
related_machinery.annotate(Avg('measure_value')).values('measure_value__avg')
Machinery.objects.filter(id=machinery_id).update(
measure_value=F('initial_measure_value') + sub_total,
metrics=avg_total
)
}}}
In example `measure_value` is a `DecimalField` and `metrics` is a
`JSONField`. Also will be great if keys in `JSONField` was accessibles in
`update`, like this:
{{{
Machinery.objects.filter(id=instance.machinery_id).update(
measure_value=F('initial_measure_value') + sub_total,
metrics__average_measure_value=avg_total
)
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/32021>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.