Índice
Nem sempre dentro das aplicações vamos guardar elementos específicos da Base de Dados, neste caso referimo-nos a ficheiros, como PDF, XLS, imagem, etc.. Claro que existe a possibilidade de salvar o arquivo como binário no Banco de Dados, porém, essa prática não é adequada, pois gera uma carga adicional para consultá-los e exibi-los, além de dificultar o processo de backup por tornar um banco de dados de aplicativo de tamanho médio atinge um peso considerável.Para o Gerenciamento de arquivos Django Possui um tipo especial de campo, que ao declará-lo no modelo nos permite acessar diferentes métodos que facilitarão o manuseio dos arquivos em nossa aplicação.
Campo FileField
Como mencionamos antes, temos um tipo específico de campo com o qual Django faz manuseio de arquivos, o referido tipo de campo é FileField, este campo possui métodos específicos para armazenar arquivos e seu processamento, temos um tipo de campo que herda muito de sua funcionalidade de FileField, este é ele ImageField, que como o próprio nome sugere é especial para o manuseio de imagens.
Métodos
A seguir iremos descrever de forma simples e detalhada alguns dos métodos mais importantes que temos no tipo de campo FileField.
get_directory_name (self)
Este método simplesmente retorna o caminho relativo que será armazenado no Banco de Dados junto com o nome do arquivo, por padrão este método verifica o atributo enviar para do campo para determinar o diretório, até mesmo as subclasses respeitam esse comportamento, porém fazendo uma subclasse podemos determinar como o atributo é usado
get_filename (self, filename)
Este método funciona de forma semelhante ao anterior, exceto que seu foco muda do caminho para o nome do arquivo, o que ele faz é receber o nome do arquivo e transformá-lo da forma como será armazenado no Banco de Dados , se precisarmos fazer alguma customização Para alterar o nome do arquivo em uma estrutura específica ou gerar uma determinada extensão de arquivo, ao fazer uma subclasse devemos procurar este método para fazer a mudança.
save_form_data (self, instance, data)
Este é um método utilitário que é utilizado para formulários, porém podemos utilizá-lo como um atalho para armazenar os arquivos, para isso aceita a instância do modelo, além das informações do arquivo, desta forma o método extrai o informações necessárias para fazer upload do arquivo.
delete_file (self, instance, sender)
Este método permite deletar o arquivo que carregamos anteriormente, embora pareça ser uma maneira simples de lidar com essa tarefa, na verdade é um mecanismo um pouco mais complexo devido ao argumento remetente que você espera como um parâmetro, não deve ser chamado individualmente.
Vamos ver uma imagem de como esse método funciona para ter uma visão mais clara do que estamos falando:
Com isso terminamos este tutorial, graças ao qual temos uma ideia mais clara de como podemos lidar com os arquivos no modelo em Django graças ao campo FileField e seus métodos.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo