При обращении к бд в вебсокете django возвращаются неправильный данные

Пишу вебсокет для карточной браузерной игры на django и channels. Когда раунд заканчивается происходит подсчет результатов, сам подсчет работает правильно и даже сохраняет подсчеты в бд. Но в конце следующего раунда, при обращении к бд, она возвращает данные, которые были до предыдущего раунда. То есть если в начале первого раунда у всех 0 очков, в конце у кого-то стало 3 очка, в конце следующего раунда при расчете результата из бд возвращаются 0 очков. Хотя при начале того же раунда всем игрокам были отправлены данные полученные из бд что у кого то 3 очка. Не могу понять почему это происходит, никакого кэширования я не подключал.

Тут можно посмотреть код всего проекта.

Ниже код метода вебсокета для расчета результатов. Проблема в данных возвращаемых в players:

    async def calculate_results(self, event):
    game = await database_sync_to_async(Game.objects.get)(
        id=self.game_id
    )
    players = await database_sync_to_async(
        lambda: list(Player.objects.filter(game=game))
    )()
    self.round_num = await get_round_num(game)
    for player in players:
        round = await database_sync_to_async(Round.objects.get)(
            game=game,
            round_num=self.round_num
        )
        association = await database_sync_to_async(Association.objects.get)(
            round=round,
            player=player
        )
        choices = await database_sync_to_async(
            lambda: list(Choice.objects.filter(
                card=association.card, round=round))
        )()
        data = {}

        leader = await database_sync_to_async(lambda: round.leader)()
        points = 0

        if player == leader:
            who_chose = []

            choices_count = len(choices)
            players_count = await database_sync_to_async(game.players.count)()

            if 0 < choices_count < players_count - 1:
                points += 3 + choices_count
                player.points += points
                who_chose = await database_sync_to_async(
                    lambda: [ch.player.id for ch in choices]
                )()

        else:
            leader_association_card = await database_sync_to_async(
                lambda: Association.objects.get(
                    round=round, player=leader).card
            )()
            pl_choice_card = await database_sync_to_async(
                lambda: Choice.objects.get(round=round, player=player).card
            )()
            guess_right = False

            if leader_association_card.id == pl_choice_card.id:
                points += 3
                guess_right = True

            points += len(choices)
            player.points += points

            who_chose = await database_sync_to_async(lambda: [ch.player.id for ch in choices])()
            data.update({'guess_right': guess_right})

        await database_sync_to_async(player.save)()

        data.update({"who_chose_your_cards": who_chose,
                    "points_for_round": points, "all_points": player.points})

        if player.points >= game.points_to_win:
            game.status = GameStatus.FINISHED
            if game.winner:
                game.winner = await database_sync_to_async(
                    lambda: player if player.points > game.winner.points else game.winner
                )()
            else:
                game.winner = player
            await database_sync_to_async(game.save)()

        await self.channel_layer.group_send(
            f"player_{player.id}",
            {
                'type': 'send_message',
                'data': data
            }
        )

    winner = await database_sync_to_async(lambda: game.winner)()
    if winner:
        await self.channel_layer.group_send(
            "public_room",
            {
                "type": "send_message",
                "data": {"winner": winner.id}
            }
        )
Вернуться на верх