работа с моделями Django выбрав одно поле
у меня есть таблица/модели под названием Employees
и я хотел бы получить все строки одного поля в качестве queryset.
Я знаю, что могу сделать это так (надеюсь, что я делаю это правильно даже):
emp_list = Employees.objects.get(all)
emp_names = emp_list.eng_name
будет ли запрашивать базу данных для всех полей и использовать только один? Есть ли лучший (более быстрый) способ сделать это?
3 ответа:
Employees.objects.values_list('eng_name', flat=True)
это создает плоский список всех
eng_name
s. Если вы хотите более одного поля в строке, вы не можете сделать плоский список: это создаст список кортежей:Employees.objects.values_list('eng_name', 'rank')
кроме
values_list
как Даниилупоминает вы также можете использоватьonly
(илиdefer
для противоположного эффекта), чтобы получить набор запросов объектов, имеющих только их идентификатор и указанные поля:Employees.objects.only('eng_name')
при этом будет выполняться один запрос:
SELECT id, eng_name FROM employees