OneToOneField per i profili
Estendere un modello con un record associato
OneToOneField per i profili è una lezione Django Academy gratuita su CoddyKit. Questa è la lezione 3 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.
Esattamente uno per parte
A volte una riga è associata a una sola altra riga, in entrambe le direzioni. Questa è una relazione uno-a-uno, perfetta per separare i dati in modo ordinato.
Il modello del profilo
L'uso classico è un profilo utente: ogni utente ha un profilo e ogni profilo appartiene a un solo utente. I campi aggiuntivi rimangono separati.
Dichiarare una OneToOneField
Aggiunga una OneToOneField che punti all'altro modello. Si comporta come una ForeignKey, ma con un vincolo di unicità integrato.
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)Univoca in background
Una OneToOneField è in realtà una ForeignKey contrassegnata come unique. Questo vincolo impedisce a due profili di condividere lo stesso utente.
on_delete si applica comunque
Come ogni collegamento, richiede on_delete. Con CASCADE, eliminando l'utente viene eliminato anche il suo profilo in un solo passaggio.
user = models.OneToOneField(User, on_delete=models.CASCADE)Perché non aggiungere semplicemente i campi?
Potrebbe aggiungere molti campi al modello originale, ma un profilo separato mantiene tutto in ordine ed evita di modificare tabelle che non gestisce.
Accesso diretto
Dal profilo, legga l'utente collegato direttamente tramite il campo. Viene restituito l'unico oggetto associato.
profile = Profile.objects.first()
print(profile.user.username)Accesso inverso
Il lato inverso è particolare: da un utente si raggiunge il profilo usando il nome del modello in minuscolo, senza il suffisso _set.
user = User.objects.first()
print(user.profile.bio)Creare un profilo
Crei un profilo passando l'utente a cui deve essere associato. Il vincolo di unicità impedisce di creare un secondo profilo per lo stesso utente.
Profile.objects.create(user=user, bio="Hello!")Creazione automatica con i signal
Un approccio comune consiste nell'usare un signal post_save che crea un profilo nell'istante in cui viene creato un utente, così la coppia esiste sempre.
Eseguire query attraverso la coppia
Filtri attraverso il collegamento usando il doppio underscore, accedendo ai campi del profilo dal lato dell'utente o viceversa.
User.objects.filter(profile__bio__icontains="django")Verifica rapida
Ogni utente deve avere al massimo un profilo e ogni profilo un solo utente. Quale campo rappresenta questa relazione?
Riepilogo
Ottimo lavoro! Una OneToOneField associa due righe in modo univoco e il lato inverso si raggiunge tramite il nome in minuscolo del modello. 👤
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 «OneToOneField per i profili» è gratuita?
Sì — il testo completo di «OneToOneField per i profili» è 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 «OneToOneField per i profili»?
Estendere un modello con un record associato 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 3 di 4.
Quanto tempo richiede la lezione «OneToOneField per i profili»?
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