作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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=10
的 Manifests
对象:
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, andManifests
Product
instead of.Products
关于python - 在 Python 中使用 For 循环查找匹配值和总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58510882/
我是一名优秀的程序员,十分优秀!