gpt4 book ai didi

python - 注释相关模型中注释值的总和

转载 作者:行者123 更新时间:2023-12-01 06:27:26 25 4
gpt4 key购买 nike

我有这些模型:

class Product(..):
category = ForeignKey('InputCategory...

class InputCategory(MPTTModel):
route_to = ForeignKey('RoutingCategory...

class RoutingCategory(MPTTModel):
pass

因此 InputCategory 有许多 Products 并且 RoutingCategory 有许多 InputCategory 对象。

我可以为 InputCategory 注释 product_count:

InputCategory.objects.annotate(product_count=Count('products'))

但我需要将 product_count 注释到 RoutingCategory

我怎样才能做到这一点?

我尝试修改 InputCategoryManager 并执行以下操作:

RoutingCategory.objects.annotate(product_count=Sum('input_categories__product_count'))

但它说:FieldError:不支持自动字段查找“product_count”或不允许加入该字段。

显然我应该覆盖相关的管理器。

你知道怎么做吗?

编辑

@Willem Van Onsem 提出了这个有效的答案:

from django.db.models import Count
RoutingCategory.objects.annotate(
product_count=Count('input_categories__products')
)

但我还注释了 product_cumulative_count ,它计算自身和 InputCategory 的所有祖先的乘积。我也想从 RoutingCategory 访问此计数的总和。

我不知道怎么办。

最佳答案

首先,这样做的一个问题是 Django 使用 .objects 管理器来访问相关模型。但即使这样做了,它也不会起作用(很好)。 SQL 不允许这种多级 GROUP BY,或者至少在不首先进行查询,然后在另一个查询中使用该结果的情况下不允许。

但是您并不需要这样做,您可以在此处计算相关产品:

from django.db.models import <b>Count</b>

RoutingCategory.objects.annotate(
product_count=<b>Count('input_categories__products')</b>
)

关于python - 注释相关模型中注释值的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60064755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com