Creare relazioni tra modelli in Django è un compito comune in sviluppo web. Django offre tre tipi di relazioni tra i modelli: ForeignKey, ManyToMany e OneToOne.
Foreign Key: È una relazione uno-a-molti. Ad esempio, se stiamo modellando una relazione tra un Libro e un Autore, un autore può scrivere molti libri, ma un libro ha solo un autore. Qui, la chiave esterna sarebbe l’Autore nel modello Libro.
```
class Autore(models.Model):
nome = models.CharField(max_length=200)
class Libro(models.Model):
titolo = models.CharField(max_length=200)
autore = models.ForeignKey(Autore, on_delete=models.CASCADE)
```
ManyToMany: Questo tipo di relazione rappresenta una relazione molti-a-molti. Prendiamo per esempio una relazione tra Libri e Generi. Un libro può appartenere a molti generi e un genere può avere molti libri.
```
class Genere(models.Model):
nome = models.CharField(max_length=200)
class Libro(models.Model):
titolo = models.CharField(max_length=200)
generi = models.ManyToManyField(Genere)
```
OneToOne: Questa è una relazione uno-a-uno. Ad esempio, un Utente può avere solo un Profilo.
```
class Utente(models.Model):
nome = models.CharField(max_length=200)
class Profilo(models.Model):
utente = models.OneToOneField(Utente, on_delete=models.CASCADE)
```
Per salvare la relazione tra oggetti, Django utilizza il metodo save(). Dopo aver creato un oggetto modello, è possibile assegnare direttamente un oggetto correlato.
```
aut = Autore(nome=‘Gabriel Garcia Marquez’)
aut.save()
lib = Libro(titolo=‘Cento Anni di Solitudine’, autore=aut)
lib.save()
```
In questo esempio, abbiamo creato un oggetto autore e l’abbiamo assegnato a un oggetto libro.
Queste informazioni sono disponibili nella documentazione ufficiale di Django, una risorsa affidabile e ampiamente riconosciuta per lo sviluppo web con Django.
Fonti utilizzate:
- Documentazione ufficiale di Django: https://docs.djangoproject.com/en/3.1/topics/db/models/
- Tutorial Django di Mozilla: https://developer.mozilla.org/it/docs/Learn/Server-side/Django/Models
-Tutorial “Django per principianti” di William S. Vincent: https://djangoforbeginners.com/