Django: Diferença entre null e blank

Alura
guilhermelima
guilhermelima

Compartilhe

Avalie este artigo

2 minutos de leitura

A maneira típica de aplicativos Django interagirem com dados é através do models Django. Por exemplo, quando queremos permitir NULL em um determinado campo no banco de dados, utilizamos null=True. Já quando queremos que um campo de um formulário não seja obrigatório, utilizamos o blank=True.

Entendo o uso do null e o uso do blank

Por padrão, todos os campos do modelo Django recebem uma restrição NOT NULL no nível do banco de dados.

Para permitir que os campos do modelo Django suportem valores NULL no nível do banco de dados, declaramos a opção de campo null = True. Por exemplo:

Assim como a descrição do código, blank=True, permitimos que um determinado campo de um formulário fique em branco. Também é possível o oposto disso, com blank=False, reforçando que o determinado campo no formulário não fique em branco.

Banner do Guia Tático Alura sobre carreira em tecnologia, destacando o mapa da carreira tech. A imagem convida a explorar diferentes caminhos profissionais, comparar possibilidades e encontrar a próxima fase da carreira na área de tecnologia, com chamada “Explore o mapa”.

Utilizando o null e o blank ao mesmo tempo

A combinação dos dois é possível, quando queremos que um campo fique em branco no seu formulário e também permitir null no banco de dados.

Porém, como demonstrado no código abaixo, estas duas opções não fazem sentido lógico para usar:

null=True, blank=False

Se o campo não pode ficar em branco em um formulário, não existe a necessidade de permitir o null no banco de dados.

Exemplos de código

models.CharField(blank=True) 

Neste exemplo, o blank é armazenado como ''.

models.CharField(null=True)

NULL verdadeiro, mas nunca será definido como null no banco de dados. Vale lembrar que os tipos CHAR e TEXT nunca são salvos como NULL pelo Django, então null = True é desnecessário.

Casos especiais - DateTimeField

models.DateTimeField(blank=True)

Caso em branco, um erro de IntegrityError será gerado.

models.DateTimeField(null=True)

Apesar de null verdadeiro, deve ser preenchido em um formulário. Para ler a documentação oficial do Django, clique neste link.

Avalie este artigo

Veja outros artigos sobre Back-end

Estude 2 anos por R$ 158/mês. Planos com até 35% OFF. Ver planos.