sql >> Database >  >> RDS >> Mysql

Hoe maak je een Inner Join in django?

U zoekt waarschijnlijk naar select_related , wat de natuurlijke manier is om dit te bereiken:

pubs = publication.objects.select_related('country', 'country_state', 'city')

U kunt de resulterende SQL controleren via str(pubs.query) , wat zou moeten resulteren in uitvoer volgens de volgende regels (het voorbeeld is van een postgres-backend):

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" ) 

De geretourneerde cursorwaarden worden vervolgens vertaald naar de juiste ORM-modelinstanties, zodat wanneer u deze publicaties doorloopt, u ​​via hun eigen objecten toegang krijgt tot de waarden van de gerelateerde tabellen. Deze toegangen langs de vooraf geselecteerde forward-relaties zullen echter geen extra db-treffers veroorzaken:

{% for p in pubs %}
     {{ p.city.city_name}}  # p.city has been populated in the initial query
     # ...
{% endfor %}


  1. Op upgrade-methode wordt niet gebeld in Android sqlite

  2. Is er een verschil tussen DATE_SUB() en het gebruik van rekenkundige operatoren voor datetime-berekening?

  3. Gegevens te lang voor kolom - waarom?

  4. Maak meerdere Postgres-instanties op dezelfde machine