首页 > 解决方案 > 如何选择不同的 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') 

标签: pythondjangodjango-viewsdjango-queryset

解决方案


尝试这个:

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')

推荐阅读