Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Rappresentazione del modello dei dati

Sfruttare l'ORM di Django per la modellazione del database
Sfruttare l'ORM di Django per la modellazione del database
Link copiato negli appunti

Con questa lezione iniziamo ad occuparci della creazione e della persistenza del modello dei dati secondo Django. Abbiamo già accennato alla presenza della Model API, la libreria che implementa l'Object-Relational Mapping (ORM) in Django e che ci permette di definire e gestire le tabelle dei nostri database utilizzando semplici oggetti Python.

Model è anche il nome della classe di riferimento che utilizziamo per rappresentare il database. Infine, per praticità, chiamiamo "Model" anche tutte le classi che creiamo per rappresentare le singole tabelle e che derivano tutte della classe base (django.db.models.Model).

Quindi diciamo che con Django possiamo utilizzare una serie di Model per rappresentare le tabelle del database, le relazioni e le operazioni sui dati. Per convenzione, ogni attributo di una classe "Model" rappresenta un campo della tabella sul database.

Tutti i Model utilizzati in un'applicazione, ad esempio app, sono definiti in un unico file, models.py, contenuto nella cartella app.

Per chiarire questi concetti vediamo un caso pratico. Supponiamo di voler modellare l'entità "Cellulare" sul nostro database.

Apriamo il file models.py e descriviamo una classe Cellulare che estende la classe Model del namespace models. I nostri attributi saranno marca, modello e imei.

from django.db import models

class Cellulare(models.Model): 
  marca = model.CharField(max_length=30)
  modello = model.CharField(max_length=20)
  imei = model.CharField(max_length=18)

I nomi degli attributi definiscono anche le colonne della tabella Cellulare sul database, e tutte saranno di tipo VARCHAR. Se volessimo creare la stessa tabella con SQL scriveremmo:

CREATE TABLE app_cellulare (
   "id"      int auto_increment NOT NULL PRIMARY KEY,
   "marca"   varchar(30) NOT NULL,
   "modello" varchar(20) NOT NULL,
   "imei"    varchar(18) NOT NULL
);

Torneremo sui tipi di dato più avanti, intanto soffermiamoci sulle convenzioni:

  • il nome della tabella, app_cellulare, è automaticamente generato concatenando il nome dell'applicazione al nome del Model (minuscolo) preceduto da underscore (_)
  • il campo id è generato automaticamente e rappresenta la chiave primaria della tabella
  • il formato del comando CREATE TABLE dell'esempio rispetta il dialetto MySQL ma può variare a seconda della tipologia di database definita in nel file settings.py

Ora che abbiamo definito il modello, dobbiamo configurare Django per utilizzarlo. Per farlo dobbiamo modificare il file settings.py e, supponendo che il modello sia definito nell'applicazione app del sito miosito, aggiungere l'applicazione miosito.app ad INSTALLED_APPS. Ricordiamo che una volta inserita l'applicazione nel sito, vengono automaticamente importati i suoi model nel database.

INSTALLED_APPS = (
	#...
	'miosito.app',
	#...
)

Per fissare sul database lo schema stabilito dal modello utilizziamo il comando syncdb, che nel nostro caso crea la tabella app_cellulare:

manage.py syncdb

La prima volta che eseguiamo la sincronizzazione del database ci viene chiesto se desideriamo creare un utente superuser. Questo utente viene utilizzato per accedere all'interfaccia di amministrazione del sito, come vedremo più avanti, quindi possiamo crearlo e tenerlo da parte.

Per controllare la correttezza del modello possiamo usare il comando:

manage.py validate

che restituisce il numero di errori del modello.

Ti consigliamo anche