我是Python / Django的新手,我有以下问题。我的模型结构如下:
class Foo:
name = models.CharField(max_length=10)
class Bar:
othername = models.CharField(max_length=10)
othername2 = models.CharField(max_length=10)
fkey = models.ForeignKey(Foo, on_delete:models.CASCADE)
class FooBaroo:
FooBarooInt = models.IntegerField()
Barkey = models.ForeignKey(Bar, on_delete:models.CASCADE)
关系是1 Foo有多个Bars,1个Bar有多个FooBaroos。我想要的是用Django创建一个表,其中我有一个Bar类的完整概述。我想要显示的一件事是Bar的所有FooBarooInts的总和。但是,如果我向Bar添加一个属性来获取所有相关的FooBaroo对象(通过objects.all()。filter()),它在大多数情况下都不会返回任何内容,但不是全部(我觉得很奇怪)。
有人知道我应该如何解决这个问题吗?
答案 0 :(得分:1)
from django.db.models import Sum
class Bar:
@property
def fb_int_sum(self):
return self.foobaroo_set.aggregate(s=Sum('FooBarooInt')).get('s') or 0
# return FooBaroo.objects.filter(Barkey=self).agg...
答案 1 :(得分:0)
query = FooBaroo.objects.filter(Barkey={some_id}).all() # List all values
query_sum = FooBaroo.objects.filter(Barkey={some_id})..aggregate(Sum('Barkey')) # Query to sum
答案 2 :(得分:0)