Django: Diferença entre null e blank
2 minutos de leitura


Autor(a)
guilhermelima
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
2 minutos de leitura

Autor(a)
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
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.

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.
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.
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.
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