Следует ли мне использовать .values_list(), .exists() или что-то другое для проверки существования?

У меня есть модель со строкой в качестве первичного ключа

class Player(models.Model):

    player_tag = models.CharField(max_length=9, primary_key=True)
[...]

Тег игрока уникален для каждого игрока, и я получаю партии до 30 тегов игроков, прежде чем создать или обновить их.

Однако для этого мне нужно проверить, существует ли уже тег player, а для этого, как я знаю, в Django есть метод .exists(), который проверяет наличие элемента внутри queryset.

Однако я подумал, что это будет попадать в базу данных каждый раз, когда я ищу игрока, что звучит менее чем идеально.

Я также думал об использовании такой строки, как эта :

player_ids = models.Player.objects.values_list('player_tag', flat=True)

Который попадет в базу данных один раз, а затем я проверю этот список на наличие. Но я сомневаюсь, что это можно масштабировать. (Список игроков может стать очень длинным)

Есть ли лучшее решение для этого, что-то, что позволит мне проверять существование строкового первичного ключа, сохраняя минимальное влияние на базу данных ?

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