«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как выполнить внутреннее соединение в Django, используя select_related?

Как выполнить внутреннее соединение в Django, используя select_related?

Опубликовано 4 ноября 2024 г.
Просматривать:105

How to Perform an Inner Join in Django Using `select_related`?

Как выполнить внутреннее соединение в Django

Чтобы продемонстрировать взаимосвязанные данные из нескольких таблиц в вашем приложении Django, вы можете столкнуться с необходимостью для выполнения операции внутреннего соединения. Используя метод select_related, вы можете легко добиться этого.

Рассмотрим следующий сценарий: вы хотите отобразить названия города, штата и страны публикации в шаблоне HTML. Однако эти сведения хранятся в отдельных таблицах. Чтобы получить эту информацию с помощью внутреннего соединения, вы можете использовать метод select_related следующим образом:

Этот запрос сгенерирует оператор SQL, аналогичный следующему:
pubs = publication.objects.select_related('country', 'country_state', 'city')
SELECT "publication"."id", "publication"."title", ..., "country"." название_страны", ... ИЗ "публикации" INNER JOIN "country" ON ("publication"."country_id" = "country"."id") ) ВНУТРЕННЕЕ СОЕДИНЕНИЕ "countrystate" ON ("publication"."countrystate_id" = "countrystate"."id") INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" )

Полученные значения будут автоматически преобразованы в экземпляры модели ORM. Это позволяет вам получать доступ к связанным значениям таблицы через соответствующие объекты в цикле, как показано ниже:
SELECT "publication"."id", "publication"."title", ..., "country"."country_name", ...  
FROM "publication" 
INNER JOIN "country" ON ( "publication"."country_id" = "country"."id" ) 
INNER JOIN "countrystate" ON ( "publication"."countrystate_id" = "countrystate"."id" ) 
INNER JOIN "city" ON ( "publication"."city_id" = "city"."id" ) 
{% for p в пабах %} {{ p.city.city_name}} # p.city был заполнен в исходном запросе # ... {% endfor %}

Используя этот метод, вы можете эффективно извлекать данные из нескольких таблиц и представлять взаимосвязанную информацию в ваших шаблонах HTML, избегая при этом дополнительных обращений к базе данных для заранее выбранных прямых связей.
            
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3