小编Eri*_*ric的帖子

django 使用基于查询的聚合值注释模型

假设我有以下模型结构:

Parent():

Child():
parent = ForeignKey(Parent)

GrandChild():
child = ForeignKey(Child)
state = BooleanField()
num = FloatField()
Run Code Online (Sandbox Code Playgroud)

我正在尝试从 ParentViewSet恢复以下内容:

  1. 孩子的数量。
  2. 'state' 为 True 时的 'num' 字段的总和。

我可以执行以下操作:

queryset = Parent.objects\
    .annotate(child_count=Count('child'))\
    .annotate(sum_total=Sum('child__grandchild__num'))
Run Code Online (Sandbox Code Playgroud)

这给了我 (1) 但不是 (2) 它给了我所有孙子的总和。如何在确保所有Parent对象仍在 QuerySet 中的同时适当地过滤孙子?

django django-models django-queryset django-aggregation django-annotate

5
推荐指数
2
解决办法
4725
查看次数

嵌套外键关系中的 Sum 和 Count?

我有以下型号:

class Building():

class Floor():
    building = models.ForeignKey("Building")

class Suite():
    floor = models.ForeignKey("Floor")
    area = models.FloatField()
    available = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

在建筑物的序列化器中,在整个建筑物中,我想

  • 计算“可用”套房
  • '可用'套房'面积'字段的总和

我很确定我可以对套房列表的面积进行求和,如下所示:

models.Suite.objects.filter(Q(available=True)).aggregate(Sum('area'))
Run Code Online (Sandbox Code Playgroud)

我不知道如何嵌套它以便我可以查询整个建筑物的数据......

django django-models django-rest-framework

4
推荐指数
1
解决办法
1332
查看次数