1
resposta

Diferença entre forms.Form e forms.ModelForm

Não ficou claro para mim quando usa Form, ou ModelForm, o que significa na prática estar atrelado a um modelo, quais a vantagem de usar um ou outro

1 resposta

Oii Tais, como você está?

Peço desculpas pela demora em obter um retorno.

A diferença entre esses dois modos de realizar a mesma operação é que enquanto o Model.Form irá salvar os dados no banco e reaproveitar informações de modelos (classes) já existentes, o Form.forms, ao contrário disso, não está atrelado ao seu banco de dados e será necessário criar todos os campos de forma manual.

O Form.forms é muito utilizado para criar formulários independentes e que não tenham relações com outras classes já existentes, como por exemplo, um formulário de pesquisa. Enquanto o Model.Form será utilizado para adicionar dados em um modelo/classe já existente.

Então, suponha que você tenha um modelo/classe Pessoa, e queira transformar os dados desse modelo em um formulário… qual utilizamos? Para esse caso, como nos baseamos em um modelo, devemos utilizar o Model.Form. Já caso tivéssemos que criar um formulário de informações de Contato e não tivéssemos nenhuma classe em relação a isso, poderíamos simplesmente utilizar o Form.forms.

Mas vale ressaltar que a existência de um, não exclui o uso do outro, podemos utilizá-lo em conjunto, como mostro abaixo:

from django import forms

class FormContato(forms.ModelForm):
    # usando a classe Forms.forms
    assunto = forms.CharField(max_length=100)
    mensagem = forms.CharField(widget=forms.Textarea)

    class Meta:
        model = Contato # importamos o modelo para basear o formulário nele
        fields = [
            'assunto',
            'mensagem', 
        ]

Qualquer dúvida fico à disposição.

Abraços e bons estudos!

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