python - 我试图从 Django 中的模型中聚合属性的总和
问题描述
在模型页面上,我创建了一个名为 的属性nzd_price
,它实际上不是一个字段,而是一个属性。在 templatetags 页面上,我尝试将一列的所有行的总和汇总nzd_price
为具有名称的新行Total
:
models.py
:
class BrazilBill(models.Model):
item = models.CharField('item', max_length = 50)
price = models.DecimalField('price', max_digits = 10, decimal_places = 2)
@property
def nzd_price(self):
return round(float(self.price) * 0.29, 2)
templatetags/total_price.py
:
from django import template
from django.db.models import Sum
from financial_planning.models import BrazilBill
register = template.Library()
@register.filter
def brazil_bill_total_brl(value):
return BrazilBill.objects.aggregate(Sum('price')).get('price__sum')
@register.filter
def brazil_bill_total_nzd(value):
return BrazilBill.objects.aggregate(Sum('nzd_price')).get('nzd_price__sum')
错误:
FieldError at /financial-planning/
Cannot resolve keyword 'nzd_price' into field. Choices are: id, item, price
基于Calculate the sum of model properties in Django,我还尝试了:
@register.filter
def brazil_bill_total_nzd(value):
return BrazilBill.objects.aggregate(Sum('brazilbill__nzd_price'))
解决方案
您需要先注释此属性。
(
BrazilBill.objects.annotate(nzd_price=F("price")*0.29)
.aggregate(Sum("nzd_price"))
)
推荐阅读
- javascript - 直接来自 WebAssembly 的文件/流保护程序?
- javascript - 使用 Yup 验证包含对象数组的 formik 字段
- python - 如何用漂亮的汤在python中的其他特定类之后获得一个特定类?
- sql - 按每个嘴巴的领土所有者计算所有寄存器
- c# - 无法使用 MouseKeyHook 检测全局鼠标按下
- python - 如何从文件中加载一个类,只给它在 Python 中的字符串规范?
- regex - 新手的基本正则表达式
- python - 使用第二列的百分比变化填充列中的空值,同时按第三列分组
- python - 有没有办法用相对于 repo 的路径读取文件,而不取决于该文件在计算机上的保存位置?
- python - Pyspark 和 Graphframes:聚合消息功率均值