我对 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有多个Bar,1个Bar有多个FooBaroo。我想要的是用 Django 创建一个表,其中我对 Bar 类有完整的概述。我想要显示的内容之一是 Bar 的所有 FooBarooInts 的总和。然而,如果我向 Bar 添加一个属性来获取所有相关的 FooBaroo 对象(通过objects.all().filter()),它最终在大多数情况下不会返回任何内容,但不是全部(我觉得这很奇怪)。
有人知道我应该如何解决这个问题吗?
最佳答案
利用related_name
和 aggregation :
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...
关于python - 如何访问稍后实例化的模型以在 Django 中进行计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46825512/