Come ogni applicazione che si rispetti, abbiamo bisogno di impostare e generare la struttura dati del nostro programma. La primissima cosa da fare è quella di istruire Django ad utilizzare un database.
Per questa guida sceglieremo PostgreSQL. Per configurarlo potete seguire la guida per installare PostgreSQL.
Una volta installato e configurato il database apriamo il file settings.py e cerchiamo la riga DATABASES e modifichiamola nel modo seguente:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'musicdb',
'USER': 'vostro_nome',
'PASSWORD': 'password',
'HOST': '',
'PORT': '',
}
}
Dove vostro_nome e password sono l’username e la password che avete impostato nella fase di configurazione del database. Inoltre dovete creare preventivamente un database di nome “musicdb”. Per completezza spieghiamo tutti i parametri:
- ENGINE è il modulo di django di backend che si interfaccia con lo specifico database. Scegliamo quello del nostro database.
- NAME è il nome del database o del file nel caso di SQLite.
- USER è il nome utente per l’accesso al db (non serve nel caso di SQLite).
- PASSWORD è la password di accesso.
- HOST e PORT sono i dati che indicano la posizione e la porta di accesso a db nel caso il database non sia sulla stessa macchina del server.
Assicuratevi anche che sia installato il pacchetto:
python-psycopg2
Necessario per far interfacciare python al DB.
A questo punto non ci resta che creare lo schema del database. Per fare ciò apriamo il file models.py e inseriamo una cosa del tipo:
from django.db import models
# Create your models here.
class Ruolo(models.Model) :
descrizione = models.CharField(max_length=30)
class Artista(models.Model):
nome = models.CharField(max_length=50)
cognome = models.CharField(max_length=50)
ruoli = models.ManyToManyField(Ruolo)
class Gruppo(models.Model):
nome = models.CharField(max_length=50)
membri = models.ManyToManyField(Artista)
class Genere(models.Model):
descrizione = models.CharField(max_length=30)
class Traccia(models.Model):
nome = models.CharField(max_length=50)
durata = models.TimeField()
class Album(models.Model):
nome = models.CharField(max_length=50)
gruppo = models.ForeignKey(Gruppo)
genere = models.ForeignKey(Genere)
data = models.DateField()
tracce = models.ManyToManyField(Traccia)
Questo file specifica la struttura delle tabelle del database. Tutto senza scrivere una sola riga di SQL. Vediamo un po il significato di alcuni campi:
- CharField è un campo di testo semplice. Il parametro max_length specifica il numero massimo di caratteri memorizzabili nel campo.
- ForeignKey specifica un collegamento uno-a-molti verso un altra tabella. Ad esempio un Album ha un unico Gruppo che lo suona ma un Gruppo può avere uno o più Album nella propria discografia.
- DateField specifica una data.
- TimeField specifica un tempo.
- ManyToMany specifica un collegamento molti-a-molti verso un altra tabella. Ad esempio un Gruppo può avere uno o più Artisti che ne fanno parte, ma un Artista può partecipare a uno o più gruppi.
Ora, rendiamo questo modello un database vero e proprio con il comando:
python manage.py syncdb
Se tutto è andato a buon fine e il modello è valido ci verrà chiesto se vogliamo creare una zona del database per gli utenti. Diciamo di si. Ci verrà chiesto di creare il super-user, creiamolo indicando un nome e la password.
A questo punto possiamo provare il nostro database.
Apriamo la shell di django con
python manage.py shell
E all’interno digitiamo:
from musicdb.models import *
freddie = Autore(nome="Freddie, cognome="Mercury")
freddie.save()
Con pgAdmin3 possiamo facilmente vedere che il cantante è stato aggiunto nella giusta tabella.
sono un apprendista stregone dell’ordine di Django: bel sito il tuo… ti ho scoperto grazie a linuxfeed e ora ti tengo d’occhio…