Django join query using foreignkey

select locations.name,regions.region_name
from locations 
inner join regions on locations.region_id = regions.id
order by locations.name;

Как сделать этот запрос в Django? Я хочу показать имя страны-региона в теге select, например, chennai-india

Вы можете получить это с помощью:

mylocation.region.region_name

с mylocation объектом Location, но это сделает дополнительный запрос для получения региона.

Вы можете повысить эффективность с помощью .select_related(…) [Django-doc]:

locations = Location.objects.select_related('region').order_by('name')

В этом случае данные для .region будут загружены в том же запросе.


Примечание: обычно модели Django дается сингулярное имя, поэтому Location вместо Locations.


Примечание: Обычно поля модели не имеют префикса с именем модели. Это делает запросы более длинными для чтения, и часто хотят использовать наследование (абстрактных) моделей для наследовать поля, поэтому использование префикса сделает их менее пригодными для повторного использования. Поэтому лучше переименовать ваше поле region_name в name.

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