Django:如何在聚合中使用外键字段?

tia*_*anz 5 python django

假设我有以下两种型号:

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
Run Code Online (Sandbox Code Playgroud)

现在我想计算模型(field_a * field_b * factor)中所有对象的总和Child.我可以计算的总和(field_a * field_b)aggregate(value=Sum(F('field_a')*F('field_b'), output_field=DecimalField())).我的问题是如何factorParent模型中拔出字段?

我是Django的新手,非常感谢你的帮助!

And*_*eas 5

Django让你跟随双下划线(__)的关系尽可能深.所以在你的情况下F('parent__factor')应该做的伎俩.

完整的查询集:

Child.objects.aggregate(value=Sum(F('field_a') * F('field_b') * F('parent__factor'), output_field=DecimalField()))
Run Code Online (Sandbox Code Playgroud)