python - 如何选择不同的 A 列,然后在 DJANGO 中汇总 B 列的值?
问题描述
我尝试创建一个加密投资组合网页。我的问题如下。 我呈现 html 时的当前 事务表:
Crypto_Name | 贸易总值 |
---|---|
比特币 | 150 |
比特币 | 100 |
总督 | 200 |
总督 | 210 |
所需交易表:
Crypto_Name | 贸易总值 |
---|---|
比特币 | 250 |
总督 | 410 |
我想选择Crypto_Name 的不同值,然后总结总交易价值中的值。
模型.py:
class Transaction(models.Model):
"""Model representing a trade."""
portfolio = models.ForeignKey('Portfolio',on_delete=models.CASCADE)
coin = models.ForeignKey(Coin,on_delete=models.CASCADE)
number_of_coins = models.DecimalField(max_digits=10, decimal_places=0)
trade_price = models.DecimalField(max_digits=10, decimal_places=2)
date = models.DateField()
def __str__(self):
return str(self.portfolio)
@property
def total_trade_value(self):
return self.trade_price * self.number_of_coins
views.py 查询:
def my_portfolio(request):
filtered_transaction_query_by_user = Transaction.objects.filter(portfolio__user=request.user)
...
我在很多事情中尝试过:
test = filtered_transaction_query_by_user.order_by().values('coin__name').distinct()
它只给了我两个丑陋的加密名称
{'coin__name': 'Bitcoin'}
{'coin__name': 'Doge'}
但是当我在 html 中呈现它们时,其他列是空的。
我感谢您的帮助!!!:)
更新:非常感谢@HudsonBarroso 的回答:
test = filtered_transaction_query_by_user.values('coin__name').annotate( total = (Sum(trade_price ) * Sum(number_of_coins))).order_by('-total')
解决方案
尝试这个:
from django.db.models import Sum
test = filtered_transaction_query_by_user.values('coin__name').annotate(
total = (Sum(trade_price ) * Sum(number_of_coins))).order_by('-total')
推荐阅读
- reactjs - 当前日期,年份,月份通过函数做出反应
- sql-server - 创建列作为 XML 内容
- android - Android Studio 错误:构建扫描未发布
- html - 在 HTML 网站项目中调用外部 MVC 视图
- angular - Angular 5 firebase 不工作
- c# - Drools 不会向我的 c# 桌面应用程序返回任何结果
- uwp - 如何设置 InkCanvas 笔颜色的笔触不透明度?
- ember.js - 将 ember 应用程序升级到 3.0 意外令牌 <<
- keras - Keras 连接卷积层:每个卷积层所需的数据格式
- python-3.5 - 在帮助文档中显示 @property 数据描述符的类型提示