Tipi di campo in Django

Ecco un elenco di tutti i tipi di campo utilizzabili in un modello di Django


AutoField

class AutoField(**options)

Un IntegerField che incrmeenta automaticamente secondo gli ID disponibili. Normalmente non c'è bisogno di utilizzarlo direttamente, in quanto un campo chiave primaria verrà automaticamente aggiunto al modello se non si specifica diversamente.


BigAutoField

class BigAutoField(**options)

Un integer a 64-bit, simile a AutoField con la differenza che è garantito per numeri da 1 a 9223372036854775807.


BigIntegerField

class BigIntegerField(**options)

Un integer a 64-bit, simile a IntegerField con la differenza che è garantito per numeri da -9223372036854775808 to 9223372036854775807. Il widget per form di default per questo campo è un TextInput.


BinaryField

class BinaryField(max_length=None, **options)

Un campo per dati binari. Possono essere assegnati bytes, bytearray o memoryview. Di default BinaryField imposta editable a False, in questo caso non può essere incluso in un ModelForm.
BinaryField ha un argomento extra opzionale:
Binaryfield.max_length

La lunghezza massima (in caratteri) del campo. La lunghezza massima è fatta rispettare dalla validazione di Django utilizzando MaxLengthValidator.


BooleanField

class BooleanField(**options)

Un campo vero/falso.
Il form widget di default per questo campo è CheckboxInput, oppure NullBooleanSelect se null=True
Il valore di default del campo BooleanField è None quando Field.default non è definito.


CharField

class CharField(max_length=None, **options)

Un campo per stringhe, da piccole a grandi.
Per un più grande ammontare di testo, utilizzare Textfield.
Il form widget di default per questo campo è TextInput
CharField ha un argomento obbligatorio extra:
CharField.max_length
La lunghezza massima (in caratteri) del campo.La lunghezza massima è fatta rispettare dalla validazione di Django utilizzando MaxLengthValidator.


DateField

class DateField(auto_now=False, auto_now_add=False, **options)

Una data, rappresentata in Python da una istanza di datetime.date. Ha alcuni argomenti extra opzionali:

DateField.auto_now

Imposta automaticamente il campo ad "adesso" ogni volta che l'oggetto viene salvato. Utile per timestamps "modificato il...". Da notare che viene utilizzata sempre la data attuale, non è un valore di default che si possa sovrascrivere.

Questo campo viene aggiornato automaticamente solo quando viene chiamata la funzione Model.save(). Il campo non è aggiornato quando si fanno update ad altri campi in altri modi, come ad esempio QuerySet.update(), ma è possibile specificare un valore custom per il campo in un update come quello.

DateField.auto_now_add

Imposta automaticamente il campo ad "adesso" quando l'oggetto è creato la prima volta. Utile per la creazione di timestamps. Da notare che viene utilizzata sempre la data attuale, non è un valore di default che si possa sovrascrivere. Quindi, se anche impostate un valore per questo campo quando create l'oggetto, il valore verrà ignorato. Se si vuole modificare questo campo, invece di auto_now_add=True utilizzate:

  • Per DateField: default=date.today - da datetime.date.today()
  • Per DateTimeField: default=timezone.now - da django.utils.timezone.now()

Il form widget di default per questo campo è TextInput. L'admin aggiunge un calendario JavaScript e una shortcut per "Oggi". Include un messaggio di errore aggiuntivo invalid_date.

Le opzioni auto:now_add, auto_now e default sono mutualmente esclusive. Qualsiasi combinazione di queste opzioni risulterà in un errore.


DateTimeField

class DateTimeField(auto_now=False, auto_now_add=False, **options)

Data e ora, rappresentata in Python da un'istanza di datetime.datetime. Ha alcuni argomenti extra come DateField.
Il form widget di default per questo campo è un TextInput singolo. L'admin utilizza due TextInput separati con JavaScript


DecimalField

class DecimalField(max_digits=None, decimal_places=None, **options)

Un numero decimale rappresentato in Python da un'istanza di Decimal. L'input viene validato utilizzando DecimalValidator.
Ha due argomenti obbligatori:

DecimalField.max_digits

Il massimo numero di cifre permesse nel numero. Da notare che questo numero deve essere più grande o uguale a deciaml_places.

DecimalField.decimal_places

Il numero di cifre decimali da permettere nel numero

Per esempio, per salvare numeri fino al 999 con una risoluzione di due decimali, si utilizzerà:

models.DecimalField(..., max_digits=5, decimal_places=2)

E per salvare numeri fino a circa un miliardo con una risoluzione di dieci decimali, si utilizzerà:

models.DecimalField(..., max_digits=19, decimal_places=10)

Il form widget di default per questo campo è NumberInput se localize è False, altrimenti è TextInput