1
resposta

O campo descrição não é obrigatório?

Na classe Fotografia definimos o campo descricao com null=False e blank=False. Na hora de criar um registro no banco de dados, não foi informado um valor para esse campo e mesmo assim a informação foi salva no banco de dados. Como?

1 resposta

Olá Fábio! Tudo bem?

Pelo que você descreveu, parece que você criou um objeto Fotografia sem fornecer um valor para descricao, mas ele foi salvo no banco de dados sem problemas.

Isso pode ocorrer por alguns motivos. Vamos explorar algumas possibilidades:

  1. Migrations não aplicadas corretamente: Se você fez alterações no seu modelo após criar as migrations e não as aplicou corretamente, o banco de dados pode não estar refletindo essas mudanças. Para garantir que todas as migrations foram aplicadas, execute:

    python manage.py makemigrations
    python manage.py migrate
    
  2. Criação do objeto via Django Admin: Se você estiver criando o objeto via Django Admin, verifique se o campo descricao está configurado corretamente no formulário de criação/edição.

  3. Criação do objeto via shell: No exemplo que você forneceu, você criou um objeto Fotografia sem especificar o campo descricao:

    foto = Fotografia(nome="Nebulosa de Carina", legenda="webbtelescope.org / NASA / James Webb", foto="carina-nebula.png")
    foto.save()
    

    Como descricao não foi fornecido, ele pode estar sendo salvo como uma string vazia. Para evitar isso, você pode definir um valor padrão ou garantir que todos os campos obrigatórios sejam preenchidos ao criar o objeto:

    foto = Fotografia(nome="Nebulosa de Carina", legenda="webbtelescope.org / NASA / James Webb", descricao="Uma bela nebulosa", foto="carina-nebula.png")
    foto.save()
    
  4. Verificação no banco de dados: Verifique diretamente no banco de dados se o campo descricao está realmente configurado para não aceitar valores nulos. Você pode usar uma ferramenta como SQLite Viewer para inspecionar a estrutura da tabela galeria_fotografia.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.