场景: 一个用户表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)