gpt4 book ai didi

python - 在 Python 中使用 For 循环查找匹配值和总计

转载 作者:行者123 更新时间:2023-11-28 21:31:18 31 4
gpt4 key购买 nike

我有一个 Django 项目,其中我的 list 模型由商品代码和数量组成。我想循环遍历模型并找到每个商品代码的总数量。所以我的看法如下:

manifest = Manifests.objects.all()

我如何使用 for 循环或其他东西来总计每个项目代码的数量。或者更清楚地说,如果商品代码 10 出现 3 次,数量 = 1、2 和 3。商品代码 10 的总数应为 6,如果商品代码 20 出现两次,数量 = 2 和 5,总数应为 7。

以下是引用模型:

模型.py

class Manifests(models.Model):
reference = models.IntegerField()
quantity = models.IntegerField()
item_code = models.ForeignKey(Products, default=None, blank=True, null=True)

最佳答案

不要使用for循环。您可以使用以下方式注释 Products 的查询集:

from django.db.models import Sum

Products.objects.annotate(
total_quantity=<b>Sum('manifests__quantity')</b>
)

从此查询集中产生的 Products 对象将具有一个额外的属性 .total_quantity,其中包含以下 .quantity 的总和: 相关 Manifests对象。

或者您可以仅计算 reference=10Manifests 对象:

from django.db.models import Sum, Q

Products.objects.filter(
<b>Q(manifests=None) | Q(manifests__reference=10)</b>
).annotate(
total_quantity=Sum('manifests__quantity')
)

Note: usually the name of a model is singular, so Manifest instead of Manifests, and Product instead of Products.

关于python - 在 Python 中使用 For 循环查找匹配值和总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510882/

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