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