Abbiamo detto che ogni attributo del modello corrisponda ad un campo della tabella nel DB. Per definire gli attributi ci serviamo della classe Field
, dalla quale derivano i tipi di dato da associare ai singoli campi (proprietà o attributi delle classi).
Questi tipi di dato, relativi al modello a oggetti, sono poi tradotti nei corrispettivi tipi di dato di MySQL.
Tipo Django | Tipo MySQL |
---|---|
CharField |
VARCHAR |
IntegerField |
INTEGER |
BooleanField |
BOOLEAN |
DateField |
DATE |
DateTimeField |
DATETIME |
TextField |
TEXT |
Possiamo anche creare un nuovo tipo, estendendo la classe Field
, ma questo esula dagli scopi di questa guida.
Ogni tipo accetta un certo insieme di argomenti, ad esempio il tipo CharField
richiede che sia specificato il parametro max_length
, ovvero la dimensione dal campo VARCHAR
corrispondente.
Ci sono però alcuni argomenti, opzionali, che sono comuni a tutti i tipi, ecco i più importanti:
Argomento | impostato mediante | descrizione |
---|---|---|
null | null=True |
indica che l'attributo accetta valori NULL |
blank | blank=True |
utilizzato dalle procedure di validazione di Django per identificare gli attributi richiesti e quelli facoltativi (possono essere lasciati vuoti) |
default | default=<valore> |
imposta il valore di default del campo |
help_text | help_text="<testo>" |
testo visualizzato nell'interfaccia di amministrazione dell'applicazione |
primary_key | primary_key=True |
definisce il campo come chiave privata (se nessun attributo del modello contiene questa opzione, viene creata automaticamente una chiave primaria id, di tipo IntegerField auto incrementale) |
unique | unique=True |
imposta l'attributo come univoco per la tabella |