работа с моделями Django выбрав одно поле


у меня есть таблица/модели под названием Employees и я хотел бы получить все строки одного поля в качестве queryset.

Я знаю, что могу сделать это так (надеюсь, что я делаю это правильно даже):

emp_list = Employees.objects.get(all)
emp_names = emp_list.eng_name

будет ли запрашивать базу данных для всех полей и использовать только один? Есть ли лучший (более быстрый) способ сделать это?

3 57

3 ответа:

Employees.objects.values_list('eng_name', flat=True)

это создает плоский список всех eng_names. Если вы хотите более одного поля в строке, вы не можете сделать плоский список: это создаст список кортежей:

Employees.objects.values_list('eng_name', 'rank')

кроме values_list как Даниилупоминает вы также можете использовать only (или defer для противоположного эффекта), чтобы получить набор запросов объектов, имеющих только их идентификатор и указанные поля:

Employees.objects.only('eng_name')

при этом будет выполняться один запрос:

SELECT id, eng_name FROM employees

мы можем выбрать необходимые поля из-за ценностей.

Employee.objects.all().values('eng_name','rank')