Django Query вызывается каждый раз, когда вызывается приписанная ему переменная [дубликат].

У меня такой код:

players = room.player_set.all().order_by('?')  # mix the players

'order_by' - это получение случайного порядка элементов, что необходимо для данного случая и не дорого для базы данных, так как в player_set не более 3 элементов.

При каждом обращении к переменной 'players' выполняется запрос... то есть при каждом обращении к переменной (например, в print) изменяется и значение 'players'...

Я пробовал deepcopy, но безуспешно.

EDIT: SOLUTION

По-видимому, поскольку содержимое запроса может меняться, запрос отзывается, как я и предполагал: объяснение здесь Django : random ordering(order_by('?')) делает дополнительный запрос

Этот новый код работает...

players = list(room.player_set.all())
    
random.shuffle(players)  # mix the players

Странно, что запрос вызывается каждый раз... Мне нужно то, что есть в БД в это время, а не то, что есть, когда я использую переменную...

Вернуться на верх