У меня проблема с записью группы по sql в приложение django. Может ли кто-нибудь из вас, пользователей django, помочь мне написать этот sql в дружественный django код? Это моя модель:группа в 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)
И это 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'))
Спасибо заранее, я надеюсь, что это не будет проблемой для некоторых из вас.
Он по-прежнему дает мне такую же ошибку, как раньше. 'неподдерживаемый тип операндов для +: 'int' и 'str'' в строке' .values ("stock_id"). annotate (sum_price = sum (' price '), sum_amount = sum (' amount ')) ' , Эти данные из db должны быть int, почему это строка? – Lucas03
Я не знаю, вы никогда не упоминали об ошибке раньше ... Используете ли вы правильную 'Sum'? (это должен быть капитал, я просто использовал то, что вы разместили) – Ngenator
Да, это была сумма с небольшой первой буквой. Благодарю. – Lucas03