Atualizado: 18/01/2024

Tipos de Campos em Modelos - Django

No Django, os modelos representam a estrutura dos dados armazenados no banco de dados. Para definir as propriedades desses dados, diferentes tipos de campos estão disponíveis, cada um correspondendo a uma coluna específica no banco de dados.

Principais Tipos de Campos

Os tipos de campos mais comuns e suas finalidades são:

  • BinaryField: Armazena dados binários.

  • BooleanField: Armazena valores booleanos (True ou False).

  • NullBooleanField: Permite armazenar True, False ou Null.

  • DateField: Representa datas.

  • TimeField: Representa horários.

  • DateTimeField: Representa datas e horários combinados.

  • DurationField: Representa períodos de tempo.

  • AutoField: Armazena inteiros incrementados automaticamente, normalmente usado como chave primária.

  • BigAutoField: Similar ao AutoField, mas suporta inteiros de 64 bits.

  • SmallAutoField: Similar ao AutoField, mas suporta inteiros de 16 bits.

  • BigIntegerField: Representa números inteiros grandes.

  • DecimalField: Permite armazenar números decimais, com precisão definida por max_digits e decimal_places.

  • FloatField: Representa números de ponto flutuante.

  • IntegerField: Representa números inteiros.

  • PositiveIntegerField: Armazena números inteiros positivos.

  • PositiveBigIntegerField: Representa números inteiros positivos de 64 bits.

  • PositiveSmallIntegerField: Representa números inteiros positivos de 16 bits.

  • SmallIntegerField: Representa números inteiros de 16 bits.

  • CharField: Armazena strings com tamanho máximo definido por max_length.

  • TextField: Armazena strings de comprimento indefinido.

  • EmailField: Representa endereços de e-mail, com validação automática.

  • FileField: Representa nomes de arquivos armazenados.

  • FilePathField: Representa caminhos para arquivos no sistema.

  • ImageField: Representa informações sobre imagens.

  • GenericIPAddressField: Representa endereços IP (IPv4 ou IPv6).

  • SlugField: Armazena strings compostas por letras minúsculas, números, hífens e sublinhados.

  • URLField: Representa URLs válidas.

  • UUIDField: Representa identificadores únicos universais (UUID).

  • JSONField: Permite armazenar e manipular dados no formato JSON.

Mapeamento de Campos para Tipos no Banco de Dados

Cada tipo de campo no Django é convertido em um tipo de coluna correspondente no banco de dados, dependendo do SGBD em uso. Por exemplo:

  • O campo BooleanField no Django é mapeado para boolean no PostgreSQL e bool no MySQL.

  • Campos numéricos como IntegerField são convertidos para integer ou equivalentes em todos os SGBDs suportados.

  • O campo CharField é convertido em varchar nos principais bancos de dados, com a quantidade de caracteres definida pelo atributo max_length.

A tabela abaixo demonstra como alguns tipos de campos do Django são traduzidos para tipos de dados em diferentes sistemas de banco de dados:

TipoSQLiteMySQLPostgreSQLOracle
BinaryField()BLOB NOT NULLlongblob NOT NULLbytea NOT NULLBLOB NULL
BooleanField()bool NOT NULLbool NOT NULLboolean NOT NULLNUMBER(1) NOT NULL CHECK("Valor" IN(0,1))
NullBooleanField()bool NULLbool NULLboolean NULL NUMBER(1) NOT NULL CHECK(("Valor" IN(0,1)) OR ("Valor" IS NULL))
DateField()date NULLdate NULLdate NULLDATE NOT NULL
TimeField()time NULLtime NULLtime NULLTIMESTAMcode NOT NULL
DateTimeField()datetime NULLdatetime NULLtimestamcode NULLTIMESTAMcode NOT NULL
DurationField()bigint NOT NULLbigint NOT NULLinterval NOT NULLINTERVAL DAY(9) TO SECOND(6) NOT NULL
AutoField()integer NOT NULL AUTOINCREMENTinteger AUTO_INCREMENT NOT NULLserial NOT NULLNUMBER(11) NOT NULL
BigIntegerFieldbigint NOT NULLbigint NOT NULLbigint NOT NULLNUMBER(19) NOT NULL
DecimalField(decimal_codelaces=X, max_digits=Y)decimal NOT NULLnumeric(X, Y) NOT NULLnumeric(X, Y) NOT NULLNUMBER(10, 3) NOT NULL
FloatFieldreal NOT NULLdouble coderecision NOT NULLdouble coderecision NOT NULLDOUBLE codeRECISION NOT NULL
IntegerFieldinteger NOT NULLinteger NOT NULLinteger NOT NULLNUMBER(11) NOT NULL
codeositiveIntegerFieldinteger unsigned NOT NULLinteger UNSIGNED NOT NULLinteger NOT NULL CHECK ("Valor" > 0)NUMBER NOT NULL CHECK ("Valor" > 0)
codeositiveSmallIntegerFieldsmallint unsigned NOT NULLsmallint UNSIGNED NOT NULLsmallint NOT NULL CHECK ("Valor" > 0)NUMBER(11) NOT NULL CHECK ("Valor" > 0)
SmallIntegerFieldsmallint NOT NULLsmallint NOT NULLsmallint NOT NULLNUMBER(11) NOT NULL
CharField(max_length=N)varchar(N) NOT NULLvarchar(N) NOT NULLvarchar(N) NOT NULLNVARCHAR2(N) NULL
TextField()text NOT NULLlongtext NOT NULLtext NOT NULLNCLOB NULL
EmailField()varchar(254) NOT NULLvarchar(254) NOT NULLvarchar(254) NOT NULLNVARCHAR2(254) NULL
FileField()varchar(100) NOT NULLvarchar(100) NOT NULLvarchar(100) NOT NULLNVARCHAR2(100) NULL
FilecodeathField()varchar(100) NOT NULLvarchar(100) NOT NULLvarchar(100) NOT NULLNVARCHAR2(100) NULL
ImageField()varchar(100) NOT NULLvarchar(100) NOT NULLvarchar(100) NOT NULLNVARCHAR2(100) NULL
GenericIcodeAddressField()char(39) NOT NULLchar(39) NOT NULLinet NOT NULLVARCHAR2(39) NULL
SlugField()varchar(50) NOT NULLvarchar(50) NOT NULLvarchar(50) NOT NULLNVARCHAR2(50) NULL
URLField()varchar(200) NOT NULLvarchar(200) NOT NULLvarchar(200) NOT NULLNVARCHAR2(200) NULL
UUIDField()char(32) NOT NULLchar(32) NOT NULLuuid NOT NULLVARCHAR2(32) NULL
JSONField()jsonb

Essa tabela destaca a portabilidade dos modelos do Django, já que o framework ajusta automaticamente os tipos de dados para o SGBD escolhido.

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com