Django                
            Riferimento del campo del modello
        
        
            
    Ricerca…
Parametri
| Parametro | Dettagli | 
|---|---|
| nullo | Se vero, i valori vuoti possono essere memorizzati come nullnel database | 
| vuoto | Se è vero, il campo non sarà richiesto nei moduli. Se i campi vengono lasciati vuoti, Django utilizzerà il valore di campo predefinito. | 
| scelte | Un iterable di iterables a 2 elementi da utilizzare come scelte per questo campo. Se impostato, il campo viene visualizzato come un elenco a discesa nell'amministratore. [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')]. Per raggruppare le opzioni, annidare semplicemente i valori:[('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))] | 
| db_column | Per impostazione predefinita, django utilizza il nome del campo per la colonna del database. Usalo per fornire un nome personalizzato | 
| db_index | Se True, verrà creato un indice su questo campo nel database | 
| db_tablespace | Lo spazio tabella da utilizzare per l'indice di questo campo. Questo campo viene utilizzato solo se il motore del database lo supporta, altrimenti viene ignorato . | 
| predefinito | Il valore predefinito per questo campo. Può essere un valore o un oggetto callable. Per i valori predefiniti mutabili (una lista, un set, un dizionario) devi usare un callable. A causa della compatibilità con le migrazioni, non è possibile utilizzare lambda. | 
| modificabile | Se False, il campo non viene mostratoModelFormdel modello o inModelForm. L'impostazione predefinita èTrue. | 
| messaggio di errore | Utilizzato per personalizzare i messaggi di errore predefiniti visualizzati per questo campo. Il valore è un dizionario, con le chiavi che rappresentano l'errore e il valore è il messaggio. Le chiavi predefinite (per i messaggi di errore) sono null,blank,invalid,invalid_choice,uniqueeunique_for_date; ulteriori messaggi di errore possono essere definiti da campi personalizzati. | 
| Testo guida | Testo da visualizzare con il campo, per assistere gli utenti. HTML è permesso. | 
| on_delete | Quando viene eliminato un oggetto a cui fa riferimento un ForeignKey, Django emula il comportamento del vincolo SQL specificato dall'argomento on_delete. Questo è il secondo argomento posizionale per i campi ForeignKeyeOneToOneField. Altri campi non hanno questo argomento. | 
| chiave primaria | Se True, questo campo sarà la chiave primaria. Django aggiunge automaticamente una chiave primaria; quindi questo è richiesto solo se si desidera creare una chiave primaria personalizzata. Puoi avere solo una chiave primaria per modello. | 
| unico | Se True, gli errori vengono generati se vengono immessi valori duplicati per questo campo. Questa è una restrizione a livello di database e non semplicemente un blocco dell'interfaccia utente. | 
| unique_for_date | Impostare il valore su DateFieldoDateTimeFielde gli errori verrannoDateFieldse vi sono valori duplicati per la stessa data o la stessa data . | 
| unique_for_month | Simile a unique_for_date, tranne che i controlli sono limitati per il mese. | 
| unique_for_year | Simile a unique_for_date, tranne che i controlli sono limitati all'anno. | 
| verbose_name | Un nome descrittivo per il campo, utilizzato da Django in vari luoghi (come la creazione di etichette nei moduli di amministrazione e di modello). | 
| validatori | Un elenco di validatori per questo campo. | 
Osservazioni
- Puoi scrivere i tuoi campi se lo ritieni necessario
-  È possibile sovrascrivere le funzioni della classe del modello di base, più comunemente la funzione save()
Campi numerici
Esempi di campi numerici sono dati:
AutoField
Un numero intero a incremento automatico generalmente utilizzato per le chiavi primarie.
from django.db import models
class MyModel(models.Model):
    pk = models.AutoField()
Per impostazione predefinita, ogni modello riceve un campo chiave primaria (chiamato
id). Pertanto, non è necessario duplicare un campo id nel modello ai fini di una chiave primaria.
BigIntegerField
 Un numero intero con numeri da -9223372036854775808 a 9223372036854775807 ( 8 Bytes ). 
from django.db import models
class MyModel(models.Model):
    number_of_seconds = models.BigIntegerField()
IntegerField
 IntegerField viene utilizzato per memorizzare valori interi da -2147483648 a 2147483647 ( 4 Bytes ). 
from django.db import models
class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.IntegerField(default=0)
defaultparametrodefaultnon è obbligatorio. Ma è utile impostare un valore predefinito.
PositiveIntegerField
 Come un campo intero, ma deve essere positivo o uguale a zero (0). Il campo PositiveInteger viene utilizzato per memorizzare valori interi da 0 a 2147483647 ( 4 Bytes ). Questo può essere utile in campo che dovrebbe essere semanticamente positivo. Ad esempio se stai registrando cibi con le sue calorie, non dovrebbe essere negativo. Questo campo impedisce i valori negativi tramite le sue convalide. 
from django.db import models
class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.PositiveIntegerField(default=0)
defaultparametrodefaultnon è obbligatorio. Ma è utile impostare un valore predefinito.
SmallIntegerField
 SmallIntegerField viene utilizzato per memorizzare valori interi da -32768 a 32767 ( 2 Bytes ). Questo campo è utile per valori non non estremi. 
from django.db import models
class Place(models.Model):
    name = models.CharField(max_length=255)
    temperature = models.SmallIntegerField(null=True)
PositiveSmallIntegerField
 SmallIntegerField viene utilizzato per memorizzare valori interi da 0 a 32767 ( 2 Bytes ). Proprio come SmallIntegerField questo campo è utile per valori che non vanno così alti e dovrebbero essere semanticamente positivi. Ad esempio, può memorizzare l'età che non può essere negativa. 
from django.db import models
class Staff(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    age = models.PositiveSmallIntegerField(null=True)
Oltre a PositiveSmallIntegerField è utile per le scelte, questo è il modo Djangoic di implementare Enum:
from django.db import models
from django.utils.translation import gettext as _
APPLICATION_NEW = 1
APPLICATION_RECEIVED = 2
APPLICATION_APPROVED = 3
APPLICATION_REJECTED = 4
APLICATION_CHOICES = (
    (APPLICATION_NEW, _('New')),
    (APPLICATION_RECEIVED, _('Received')),
    (APPLICATION_APPROVED, _('Approved')),
    (APPLICATION_REJECTED, _('Rejected')),
)
class JobApplication(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    status = models.PositiveSmallIntegerField(
        choices=APLICATION_CHOICES, 
        default=APPLICATION_NEW
    )
    ...
La definizione delle scelte come variabili di classe o variabili del modulo in base alla situazione è un buon modo per usarle. Se le scelte sono passate al campo senza nomi amiche di quanto creerà confusione.
DecimalField
Un numero decimale a precisione fissa, rappresentato in Python da un'istanza decimale. A differenza di IntegerField e dei suoi derivati questo campo ha 2 argomenti richiesti:
- DecimalField.max_digits : il numero massimo di cifre consentito nel numero. Si noti che questo numero deve essere maggiore o uguale a decimal_places.
- DecimalField.decimal_places : il numero di posizioni decimali da memorizzare con il numero.
 Se si desidera memorizzare numeri fino a 99 con 3 posizioni decimali, è necessario utilizzare max_digits=5 e decimal_places=3 : 
class Place(models.Model):
    name = models.CharField(max_length=255)
    atmospheric_pressure = models.DecimalField(max_digits=5, decimal_places=3)
BinaryField
Questo è un campo specializzato, usato per memorizzare dati binari. Accetta solo byte . I dati sono serializzati in base64 su storage.
Poiché si stanno memorizzando dati binari, questo campo non può essere utilizzato in un filtro.
from django.db import models
class MyModel(models.Model):
    my_binary_data = models.BinaryField()
CharField
Il CharField viene utilizzato per memorizzare lunghezze di testo definite. Nell'esempio seguente possono essere memorizzati fino a 128 caratteri di testo nel campo. L'inserimento di una stringa più lunga comporterà l'innalzamento di un errore di convalida.
from django.db import models
class MyModel(models.Model):
    name = models.CharField(max_length=128, blank=True)
DateTimeField
DateTimeField viene utilizzato per memorizzare i valori di data e ora.
class MyModel(models.Model):
    start_time = models.DateFimeField(null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)
 Un DateTimeField ha due parametri facoltativi: 
- auto_now_addimposta il valore del campo sul datetime corrente al momento della creazione dell'oggetto.
- auto_nowimposta il valore del campo sul datetime corrente ogni volta che viene salvato il campo.
 Queste opzioni e il parametro default si escludono a vicenda. 
ForeignKey
 Il campo ForeignKey viene utilizzato per creare una relazione many-to-one tra i modelli. Non come la maggior parte degli altri campi richiede argomenti posizionali. L'esempio seguente dimostra la relazione tra auto e proprietario: 
from django.db import models
class Person(models.Model):
    GENDER_FEMALE = 'F'
    GENDER_MALE = 'M'
    GENDER_CHOICES = (
        (GENDER_FEMALE, 'Female'),
        (GENDER_MALE, 'Male'),
    )
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    age = models.SmallIntegerField()
class Car(model.Model)
    owner = models.ForeignKey('Person')
    plate = models.CharField(max_length=15)
    brand = models.CharField(max_length=50)
    model = models.CharField(max_length=50)
    color = models.CharField(max_length=50)
 Il primo argomento del campo è la classe a cui è correlato il modello. Il secondo argomento posizionale è on_delete argomento on_delete . Nelle versioni attuali questo argomento non è richiesto, ma sarà richiesto in Django 2.0. La funzionalità predefinita dell'argomento è mostrata come segue: 
class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.CASCADE)
    ...
Ciò causerà l'eliminazione degli oggetti Car dal modello quando il relativo proprietario viene eliminato dal modello Persona. Questa è la funzionalità predefinita.
class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.PROTECT)
    ...
Ciò impedirà l'eliminazione degli oggetti Person se sono collegati ad almeno un oggetto Car. Tutti gli oggetti Car che fanno riferimento a un oggetto Persona devono essere prima eliminati. E poi l'oggetto Persona può essere cancellato.