Ricerca…


Parametri

Parametro Dettagli
nullo Se vero, i valori vuoti possono essere memorizzati come null nel 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 mostrato ModelForm del modello o in ModelForm . 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 , unique e unique_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 ForeignKey e OneToOneField . 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 DateField o DateTimeField e gli errori verranno DateField se 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)

default parametro default non è 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)

default parametro default non è 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:

  1. DecimalField.max_digits : il numero massimo di cifre consentito nel numero. Si noti che questo numero deve essere maggiore o uguale a decimal_places.
  2. 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_add imposta il valore del campo sul datetime corrente al momento della creazione dell'oggetto.

  • auto_now imposta 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.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow