Как получить все значения отдельного элемента модели из бд django

Есть модель содержащая login и password. Нужно получить все логины в виде списка.

Я сделал это как-то так:

login_array = [[i for i in f.values()][0] 
               for f in Game_user.objects.values('login')]

Есть ли способ лучше и быстрее? Нужно проверить нету ли такого логина в бд. Я решил это тем что получаю все логины из бд способом выше и просто проверяю:

if not login in login_array

Нету ли способа лучше как-то это сделать?

Views.py

from django.http import JsonResponse
from django.shortcuts import render
from .models import Game_user
import json


def login(request):
    json_data = json.loads(request.body)
    login = json_data['login']
    password = json_data['password']
    login_array = [[i for i in f.values()][0] for f in Game_user.objects.values('login')]
    if login in login_array:
        db_user = Game_user.objects.get(login=login)
        if password == db_user.password:
            return JsonResponse({'success': True})
        else:
            return JsonResponse({'success': False})
    else:
        return JsonResponse({'success': False})

def signup(request):
    json_data = json.loads(request.body)
    login = json_data['login']
    password = json_data['password']
    login_array = [[i for i in f.values()][0] for f in Game_user.objects.values('login')]
    if not login in login_array:
        Game_user.objects.create(login=login,password=password)
        return JsonResponse({'success': True})
    else:
        return JsonResponse({'success': False})

models.py

class Game_user(models.Model):
    login = models.CharField(max_length=50, verbose_name='login')
    password = models.CharField(max_length=50, verbose_name='password')

Ответы (2 шт):

Автор решения: Andrey

Метод exists() вам не подойдет?

login = json_data['login']

if Game_user.objects.filter(login=login).exists():
    print('Такой логин существует')
→ Ссылка
Автор решения: minaton

У меня был аналогичный вопрос. Вот в этом ответе я наткнулся на хороший вариант с методом values_list, который возвращает кортежи. Чтобы получить в ответ не кортежи, а кверисет по одному значению, нужно добавить параметр flat=True.

Кстати, я еще добавил distinct(), чтобы получить список без дублей.

То есть получается как-то так в твоем случае:

login_array = Game_user.objects.values_list('login', flat=True).distinct()
→ Ссылка