Let's say I have the following two models:
class Parent(models.Model):
factor = models.DecimalField(...)
... other fields
class Child(models.Model):
field_a = models.DecimalField(...)
field_b = models.DecimalField(...)
parent = models.ForeignKey(Parent)
... other fields
Now I want to calculate the sum of (field_a * field_b * factor)
of all objects in the Child
model. I can calculate the sum of (field_a * field_b)
with aggregate(value=Sum(F('field_a')*F('field_b'), output_field=DecimalField()))
. My question is how I can pull out the factor
field from the Parent
model?
I am new to Django and I really appreciate your help!
ForeignKey is a Django ORM field-to-column mapping for creating and working with relationships between tables in relational databases. ForeignKey is defined within the django. db. models.
Note that the _id in the artist parameter, Django stores foreign keys id in a field formed by field_name plus _id so you can pass the foreign key id directly to that field without having to go to the database again to get the artist object.
Django let's you follow relationships with the double underscore (__) as deep as you like. So in your case F('parent__factor')
should do the trick.
The full queryset:
Child.objects.aggregate(value=Sum(F('field_a') * F('field_b') * F('parent__factor'), output_field=DecimalField()))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With