ForeignKey e on_delete
Modellare relazioni uno-a-molti e il comportamento alla cancellazione
ForeignKey e on_delete è una lezione Django Academy gratuita su CoddyKit. Questa è la lezione 1 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.
Collegare due tabelle
I dati reali sono collegati: un libro ha un autore, un ordine ha un cliente. Una ForeignKey permette a un modello di puntare a un altro.
Relazione uno-a-molti in sintesi
Una ForeignKey rappresenta un collegamento uno-a-molti. Un autore può avere molti libri, ma ogni libro appartiene a un solo autore.
Dichiarare una ForeignKey
Aggiunga un campo di tipo ForeignKey e lo punti al modello correlato. Django memorizza il collegamento come una colonna id in background.
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)La colonna _id
Nel database, una ForeignKey verso l'autore diventa una colonna author_id che contiene la chiave primaria dell'altra riga. Quel numero è il collegamento effettivo.
on_delete è obbligatorio
Ogni ForeignKey richiede on_delete. Indica a Django cosa fare con questa riga quando viene eliminata la riga a cui punta.
CASCADE elimina i record dipendenti
CASCADE elimina anche questa riga quando viene eliminato il record principale. Rimuovendo un autore, scompaiono anche tutti i suoi libri.
author = models.ForeignKey(Author, on_delete=models.CASCADE)PROTECT blocca l'eliminazione
Usi PROTECT per rifiutare l'eliminazione finché esistono righe correlate. Django genera un errore invece di rimuovere il record principale.
author = models.ForeignKey(Author, on_delete=models.PROTECT)SET_NULL conserva il record dipendente
SET_NULL conserva la riga ma cancella il collegamento, impostando la colonna su NULL. Per funzionare, il campo deve avere null=True.
author = models.ForeignKey(Author, null=True, on_delete=models.SET_NULL)SET_DEFAULT e DO_NOTHING
SET_DEFAULT sostituisce il valore con quello predefinito del campo, mentre DO_NOTHING lascia decidere al database. Li usi solo in casi particolari.
Accedere all'oggetto correlato
Da un'istanza di libro può leggere direttamente l'autore collegato tramite il campo. Django recupera quella riga quando serve.
book = Book.objects.first()
print(book.author.name)Filtrare attraverso il collegamento
Nei filtri, attraversi la relazione usando il doppio underscore. Può accedere direttamente ai campi del modello correlato da filter.
Book.objects.filter(author__name="Ada")Verifica rapida
Elimina un autore, ma vuole conservare i suoi libri semplicemente scollegandoli. Quale valore di on_delete è adatto?
Riepilogo
Ottimo lavoro! Una ForeignKey rappresenta collegamenti uno-a-molti e on_delete decide il destino di ogni riga quando viene rimosso il record principale. 🔗
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 «ForeignKey e on_delete» è gratuita?
Sì — il testo completo di «ForeignKey e on_delete» è 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 «ForeignKey e on_delete»?
Modellare relazioni uno-a-molti e il comportamento alla cancellazione 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 1 di 4.
Quanto tempo richiede la lezione «ForeignKey e on_delete»?
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
- ForeignKey e on_delete
- ManyToManyField e modelli through
- OneToOneField per i profili
- related_name e ricerche inverse