Django之分组查询

场景: 一个用户表Account 一个记录表 Roulette_Stake ,关系是 一对多

分组计算每个玩家的押注总额

bet_list = Account.objects.filter(roulettestake__bet_id=bet_id).\
        annotate(amount=models.Sum('roulettestake__amount')).
values('id', 'username', 'amount', 'avatar', 'nickname')
def check_unpack_order_free(request,user_id):
    """
    :param request:
    :param order_id: 校验用户当天是否免费开箱
    """
    result = {'succ': False}
    now = datetime.now()
    today_str = now.strftime('%Y-%m-%d')
    day_diff = timedelta(days=1)
    start_time = datetime.strptime('%s 00:00:00' % today_str, '%Y-%m-%d %H:%M:%S')
    end_time = start_time + day_diff
    count = UnpackOrderFree.objects \
        .filter(buyer_id=user_id, status=ORDER_PAID, site=DEFAULT_SITE, created__gte=start_time, created__lt=end_time) .count()
    if count == 0:
        result['succ'] = True
    return result

切换数据源:

STATUS_SQL = 'select id from deposit_cash where status=3 and channel in (1,4) and steam_uid=%s limit 1'
        with connections['wallet'].cursor() as cursor:
            cursor.execute(STATUS_SQL, [steam_uid])
            row = cursor.fetchone()
            if row and row[0] is not None:
                result['succ'] = True
                cache.set(cache_free_key,1,timeout=None)

 

转载于:https://my.oschina.net/jamescasta/blog/909091

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值