Django Academy · Lezione

select_related per le chiavi esterne

Eseguire una JOIN sulle righe correlate in un'unica query

Lezione 2 di 413 passaggi

select_related per le chiavi esterne è una lezione Django Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Django Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Django Academy include 4 lezioni in totale.

Conoscere select_related

select_related indica a Django di recuperare in anticipo le righe correlate con la stessa query, così i cicli non generano trasferimenti aggiuntivi. ⚡

Usa una JOIN

Internamente aggiunge una JOIN SQL, recuperando insieme l'oggetto principale e la riga correlata con un solo trasferimento efficiente.

La chiamata di base

Passi il nome del campo correlato a select_related sul queryset e la JOIN viene eseguita automaticamente al caricamento dei dati.

books = Book.objects.select_related('author')

Da 101 a 1

Ora il ciclo sui libri, che legge ogni autore, esegue una sola query invece di centouno. Stesso codice, enorme vantaggio.

for book in books:
    print(book.author.name)

Quando è adatto

Lo usi per i campi ForeignKey e OneToOne, in cui ogni oggetto punta esattamente a una riga correlata che una JOIN può recuperare.

Non per le relazioni multiple

Non funziona per le relazioni many-to-many o per i collegamenti inversi uno-a-molti, perché una JOIN non può accorpare ordinatamente molte righe in una sola.

Seguire la catena

È possibile attraversare più livelli usando i double underscores, eseguendo JOIN attraverso più di una chiave esterna in una singola query.

Book.objects.select_related('author__publisher')

Più relazioni in una volta

Passi diversi nomi di campo per recuperare insieme più relazioni, tutte integrate nella stessa query ottimizzata.

Order.objects.select_related('customer', 'product')

Anche questo è differito

La query attende comunque finché non si usano effettivamente i dati, quindi concatenare filtri e order_by prima di quel momento resta economico e flessibile.

Attenzione all'ampiezza

Le JOIN aggiungono colonne, quindi non selezioni più del necessario. Recuperi solo le relazioni che legge davvero, per mantenere leggere le righe.

Un riflesso da sviluppare

Vede una chiave esterna utilizzata in un ciclo? Ricorra prima a select_related. Diventerà rapidamente un gesto naturale. 🎯

Verifica rapida

Scelga lo strumento giusto per questa relazione.

Riepilogo

select_related unisce i dati ForeignKey e OneToOne in una sola query, eliminando il problema N+1 per i collegamenti a una singola riga. Attraversi più livelli con i double underscores. ✅

Gratis per iniziare

Impara Python con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «select_related per le chiavi esterne» è gratuita?

Sì — il testo completo di «select_related per le chiavi esterne» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Django Academy, passa a CoddyKit PRO. Il corso Django Academy include 4 lezioni in totale.

Cosa imparerò in «select_related per le chiavi esterne»?

Eseguire una JOIN sulle righe correlate in un'unica query Eserciti Django Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Django Academy?

Non è richiesta alcuna esperienza precedente. Django Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «select_related per le chiavi esterne»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Django Academy?

Sì. Ogni lezione Django Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Individuare il problema N+1
  2. select_related per le chiavi esterne
  3. prefetch_related per M2M
  4. Profilazione con Debug Toolbar
← Torna a Django Academy