I modelli Django sono una componente fondamentale del framework Django per lo sviluppo di applicazioni web. Un modello Django è una descrizione di oggetti del dominio del tuo database utilizzando del semplice Python. Fornisce un’interfaccia tra il tuo database e il tuo codice Python. In altre parole, i modelli Django ti aiutano a costruire la struttura delle tue informazioni in modo semplificato e agile. Gli oggetti del modello contengono i metadati essenziali necessari per la memorizzazione e la manipolazione dei tuoi dati.
Ogni modello è una classe Python che eredita da django.db.models.Model, e le classi modelli definiscono la struttura delle tabelle di database, comprese le colonne della tabella e il loro tipo di dato, e le relazioni che hanno con altre tabelle. Ad esempio, un modello di persona potrebbe includere campi come nome (CharField), data di nascita (DateTimeField) o luogo di nascita (ForeignKey a un altro modello di città).
```
from django.db import models
class Persona(models.Model):
nome = models.CharField(max_length=100)
data_di_nascita = models.DateTimeField()
luogo_di_nascita = models.ForeignKey(Citta, on_delete=models.CASCADE)
```
Uno dei punti di forza di Django è la sua potente ORM (Object-Relational Mapping), che è strettamente legata ai modelli. L’ORM permette di interagire con il tuo database, come se fossero oggetti Python. Pertanto, non è necessario scrivere query SQL; Django lo farà per te.
Un’altra funzione chiave dei modelli Django è la possibilità di definire i metodi. Questi metodi possono essere utilizzati per automatizzare le operazioni sui dati del modello, per esempio, per calcolare l’età di una persona basandosi sulla data di nascita.
```
from django.db import models
from datetime import date
class Persona(models.Model): nome = models.CharField(max_length=100) data_di_nascita = models.DateTimeField()
def eta(self): return int((date.today() – self.data_di_nascita).days / 365.25) ```Riferimento:
- [Documentazione ufficiale Django](https://docs.djangoproject.com/en/3.1/topics/db/models/)
- [“Django for Beginners” di William S. Vincent](https://djangoforbeginners.com/)
- [Django project website](https://www.djangoproject.com/)
- [“Pro Django” di Marty Alchin](http://www.apress.com/9781430210474)