假设我有以下两种模式:
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
现在我想计算(field_a * field_b * factor)
模型中所有对象的Child
之和。我可以使用(field_a * field_b)
计算aggregate(value=Sum(F('field_a')*F('field_b'), output_field=DecimalField()))
的总和。我的问题是如何从factor
模型中提取Parent
字段?
我是Django的新手,非常感谢你的帮助!
答案 0 :(得分:5)
Django让你跟随双下划线(__)的关系尽可能深。所以在你的情况下,F('parent__factor')
应该做到这一点。
完整的查询集:
Child.objects.aggregate(value=Sum(F('field_a') * F('field_b') * F('parent__factor'), output_field=DecimalField()))