要在 Django 中显示多个相关表中的数据,通常需要内联接。在本文中,我们将探讨如何使用 Django 的 ORM(对象关系映射器)执行内连接。
模型关系
中的 models.py提供的代码定义了下表关系:
使用select_lated进行内连接
要实现内连接效果,可以使用Django的select_lated方法。它会预先选择相关对象以及主要对象,从而减少访问相关数据所需的数据库查询数量。
在views.py中,可以使用以下代码来执行内连接:
pubs = publication.objects.select_related('country', 'country_state', 'city')
检查生成的 SQL
使用str(pubs.query),可以检查生成的SQL查询。它将类似于提供的 SQL 查询,在表之间具有内部联接:
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 in pubs %} {{ p.city.city_name}} # p.city has been populated in the initial query # ... {% endfor %}
利用Django的select_lated,可以高效地实现内连接,从相关表中检索数据,减少数据库查询,提高性能。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3