select_related per le chiavi esterne
Eseguire una JOIN sulle righe correlate in un'unica query
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. ✅
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
- Individuare il problema N+1
- select_related per le chiavi esterne
- prefetch_related per M2M
- Profilazione con Debug Toolbar