用django计算每日奖金

时间:2012-05-24 09:15:46

标签: django orm aggregate-functions

我有一个代表用户下注的模型类。我想计算整个数据库(不是单个用户)的每日奖金。每个用户投注的奖金使用公式odds * coins计算(当结果= 1时)。

class UserBet(models.Model):
    user = models.ForeignKey(User)
    bet = models.ForeignKey(Bet)
    coins = models.FloatField(default=0.0) 
    placed = models.DateTimeField(editable=False) #when user places the bet
    result = models.SmallIntegerField(default=0) # 1: win, 0: no result yet, -1: lose
    odds = models.FloatField(default=0.0)
    week_number = models.SmallIntegerField(default=0)
    year = models.SmallIntegerField(default=0)
    modified = models.DateTimeField() #when result is updated

我每天都会获得成功结果的硬币(MySql):

UserBet.objects.filter(result=1).extra({'date_modified':"date(modified)"}).values('date_modified').annotate(coins_sum=Sum('coins'))

然而,这不是我想要的。每个用户放置的硬币应该与每个用户下注赔率相乘,以获得每日奖金。

这有可能吗?

1 个答案:

答案 0 :(得分:1)

您可以使用QuerySet.extra方法:

UserBet.objects.filter(result = 1).extra({'winnings':'odds * coins'})...