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
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!