Sei sulla pagina 1di 2

I Campi del Model in Django Parte 2

http://www.darioagliottone.it/model-django-parte-2/

Il Model in Django - Parte 2 - i Campi


Campi
La parte pi importante del Model (e lunica indispensabile) sono i campi della tabella. Questi sono definiti dagli attributi del Modello. Esempio: 1 2 3 4 5 6 7 8 9 10 class Musicisti(models.Model): nome = models.CharField(max_length=50) cognome = models.CharField(max_length=50) strumento = models.CharField(max_length=100) class Album(models.Model): artista = models.ForeignKey(Musician) nome = models.CharField(max_length=100) data_pubblicazione = models.DateField() voto = models.IntegerField()

Tipi di campo
Ogni campo dovrebbe essere la giusta istanza della classe Field. il type Fields usato per stabilire : Il tipo della colonna (es. INTEGER , VARCHAR ). Il widget da utilizzare nell interfaccia di amministrazione di Django, (se la si vuole). I requisiti richiesti dai forms generati automaticamente dal admin di Django. Django ha gi un set di tipi campo predefinite che vedremo pi avanti, ma si possono scrivere facilmente i propri tipi di campo

Opzioni dei campo


Ogni campo ha un set di specifici argomenti. Per esempio, CharField (e le sue sottoclassi) richiedono l argomento max_length che specifica la dimensione del VARCHAR del campo. C anche una set di argomenti valido per tutti i campi. Tutti opzionali. Ecco un breve riassunto di quelli pi utilizzati:

null
Se True, Django memorizzer i valori vuoti come NULL nel database. Il valore predefinito False.

blank
Se True, il campo pu essere vuoto. Il valore predefinito False. Attenzione, questo diverso da NULL . NULL riguarda il database, mentre blank fa parte della validazione del form. Se un campo blank= True, dal Backend di Django si pu lasciare il valore del campo vuoto. Mentre se blank = False , sar obbligatorio inserire un valore.

choices
Un iterable (come una lista o una tupla) di 2-tuple da usare come scelta per il campo. Se viene settato questo argomento ladmin Django user una select box invece del campo di testo standard cos da limitare la scelta a quelle indicate. Una choices list pu essere questa: 1 2 3 4 5 6 7 YEAR_IN_SCHOOL_CHOICES = ( (u'FR', u'Freshman'), (u'SO', u'Sophomore'), (u'JR', u'Junior'), (u'SR', u'Senior'), (u'GR', u'Graduate'), )

Il primo elemento di ogni tupla il valore che verr memorizzato nel database, il secondo elemento sar visualizzato dalla interfaccia di amministrazione, o in uno ModelChoiceField. Data un istanza del modello, con il metodo get_FOO_display si pu vedere il valore mostrato delle scelte. Ad esempio: 1 2 3 4 5 6 7 8 from django.db import models class Person(models.Model): GENDER_CHOICES = ( (u'M', u'Male'), (u'F', u'Female'), ) name = models.CharField(max_length=60) gender = models.CharField(max_length=2, choices=GENDER_CHOICES)

1 di 2

18/05/12 13.53

I Campi del Model in Django Parte 2

http://www.darioagliottone.it/model-django-parte-2/

9 10

>>> p = Person(name="Fred Flintstone", gender="M") >>> p.save() >>> p.gender u'M' >>> p.get_gender_display() u'Male'

default
il valore predefinito per il campo. pu essere un valore o un metodo. Se un metodo sar chiamato ogni volta che viene creato un nuovo oggetto.

help_text
Extra testo help sar visualizzato sotto il campo nel form dell admin delloggetto. E utile per la documentazione, anche se loggetto non ha un form.

primary_key
Se True, questo campo sar la chiave primaria per il modello. Se non si dichiara primary_key = True nei campi del modello, Django automaticamente aggiunger un campo IntegerField come chiave primaria, quindi non c bisogno di impostare primary_key = True su uno qualsiasi dei campi a meno che non si desidera modificare il comportamento predefinito per la chiave primaria.

unique
Se True, questo campo deve essere univoco in tutta la tabella.

Per la reference ufficiale in inglese consultare Models. Per una lista pi ampia consultare Common Fields

2 di 2

18/05/12 13.53