2010
01.04

Hoje um amigo da faculdade no qual está desenvolvendo seu ‘Trabalho de Conclusão de Curso’ com o Django, perguntou-me como poderia ser feito o upload de arquivos guardando sua referência no banco de dados, e nisso passei um exemplo de um pequeno projeto que utilizei o modelForms.

Com isso resolvi criar um post para caso alguém um dia venha ter essa mesma dúvida. Antes de tudo é imprescindível que tenha em mente que trabalhar com modelForms é criar formulários a partir de um modelo previamente criado em seu arquivo models.py de seu projeto.

1
class Cadastro(models.Model):
2
    nome      = models.CharField(max_length=60)
3
    idade     = models.CharField(max_length=100)
4
    cidade    = models.CharField(max_length=100)
5
    telefone  = models.CharField(max_length=10)    
6
    curriculo = models.FileField(upload_to="curriculos")
7
    portfolio = models.URLField()
8
    mensagem  = models.TextField()

 

Partindo de uma model criada com os respectivos tipos de campos que deseja, assim como nosso maior propósito neste post, é o campo de  ‘curriculo’ que será responsável por salvar a referência do arquivo copiado para o servidor. Com sua model já criada, é necessário que criemos agora o nosso formulário a partir dessa model, e para isso precisaremos escrever um bucado de código (mentira! 1º de abril… rs).

Em seu arquivo forms.py importe a model que acabou de criar e tcharam:

1
class CadastroForm(ModelForm):
2
    class Meta:
3
        model = Cadastro

 

Pronto, seu formulário já está criado!  Agora só falta renderizarmos ele na tela e salvá-lo, então agora abra seu arquivo views.py e crie a seguinte view:

01
def cadastro_curriculo(request):   
02
 
03
    if request.method == 'POST':
04
        form = CadastroForm(request.POST, request.FILES)
05
        if form.is_valid():        
06
            novo_cadastro = form.save()
07
            if novo_cadastro:                     
08
                aviso = "Seu cadastro foi realizado com sucesso"
09
                form = CadastroForm()
10
            else:
11
                aviso = "Erro ao cadastrar"
12
                form = CadastroForm()
13
    else:
14
        form = CadastroForm()
15
 
16
    return render_to_response('projeto/cadastro.html', locals(), context_instance=RequestContext(request))

 

Com isso, basta criar uma url para a view criada e testar! Só uma observação quanto a criar a instância do formulário, pois como queremos fazer o upload de arquivos para o servidor, é necessário passar a váriavel FILES como parâmetro.

Também não deixe de ler:

Não há comentários ainda.

Deixe seu comentário