我有问题通过sql将组写入django app。任何人都可以帮助我如何将这个sql编写成django友好代码?这是我的模特:
class Stock(models.Model):
name = models.CharField("Stock's name", max_length=200)
symbol = models.CharField("Stock's symbol", max_length=20)
class Dividend(models.Model):
amount = models.FloatField(default=0)
date = models.DateField('pay date')
stock = models.ForeignKey(Stock)
class UserStock(models.Model):
amount = models.FloatField('amount', default=0)
date = models.DateField('buy date')
price = models.FloatField('price', default=0)
user = models.ForeignKey(User)
stock = models.ForeignKey(Stock)
这是我想在django中编写的sql代码:
select stock_id, sum(price), sum(amount) as price from stocks_userstock group by stock_id;
我试图写这样的东西。
my_stock = UserStock.objects.filter(user=request.user)\
.annotate(sum_price = sum('price'), sum_amount = sum('amount'))
在此先感谢,我希望对你们中的一些人来说不会有任何问题。
答案 0 :(得分:1)
我相信只需添加values
来电即可
my_stock = UserStock.objects.get(user=request.user)\
.values('stock_id').annotate(sum_price = sum('price'), sum_amount = sum('amount'))
您将获得与
类似的词典列表[
{'stock_id': 0, 'sum_price': 10, 'sum_amount': 25},
...
]
请参阅here了解详情
答案 1 :(得分:0)
stock = Stock.objects.all().annotate(sum_price = Sum('user_stock__price'), sum_amount = Sum('user_stock__amount'))
它应该有用。
我已删除了我的代码段中的User
过滤器以简化,但您当然可以添加它。