Version 1 (modified by marinho, 7 years ago) (diff)

--

Declarando ModelForm's

Um ModelForm trata-se de uma classe do tipo Form que facilita a edição e inclusão de objetos de uma determinada classe de modelo. Esta classe faz parte do mesmo pacote de forms padrão do framework.

Siga os passos abaixo para criar um modelform e utilizá-lo em sua aplicação.

  1. Supondo que sua aplicação se chama "minha_app" que contenha a classe

"Produto", crie um arquivo "forms.py" em sua aplicação e insira as linhas abaixo::

from django import forms

from models import Produto

class FormProduto(forms.ModelForm):
    class Meta:
        model = Produto

a classe declarada acima irá se comportar como um form comum, mas terá todos os campos editáveis da classe de modelo adicionados automaticamente e permite que se salve o objeto criado ou editado com uma simples chamada de método.

  1. Agora edite o arquivo "views.py" de sua aplicação e adicione o seguinte

código::

from forms import FormProduto
from models import Produto

def edita_produto(request, produto_id=None):
    if produto_id:
        produto = Produto.objects.get(id=produto_id)
    else:
        produto = None

    if request.method == POST:
        form = FormProduto(request.POST, instance=produto)

        if form.is_valid():
            produto = form.save()

            if produto:
                return HttpResponse('Produto salvo com sucesso!')
    else:
        form = FormProduto(instance=produto)
    
    return render_to_response(
        'minha_app/edita_produto.html',
        locals(),
        )

o código acima é suficiente para editar e incluir um objeto da classe Produto, com as validações básicas dos campos, inclusive mensagens de erro com essas validações. Caso os campos estejam informados corretamente, o objeto será salvo e será exibida a mensagem de sucesso.

  1. Agora você vai precisar de um template para exibir este form com seus

resultados. Crie o arquivo "edita_produto.html" na pasta "templates" de sua aplicação (ou seja: "minha_app/templates/edita_produto.html") com o conteúdo abaixo::

<html>
    <body>
        <form method="post">
            <table>
                {{ form }}
            </table>

            <input type="submit"/>
        </form>
    </body>
</html>
  1. Agora para finalizar, edite o arquivo "urls.py" de seu projeto e adicione as

seguintes URLs::

url(r'^produtos/adicionar/$', 'minha_app.views.edita_produto'),
url(r'^produtos/(?P<produto_id>\d+)/editar/$', 'minha_app.views.edita_produto'),

Pronto! Agora, para adicionar um novo produto, basta rodar o projeto e acessar a URL "http://localhost:8000/produtos/adicionar/" no navegador. Para editar um produto já existe que tenha o id "20", acesse a URL "http://localhost:8000/produtos/20/editar/" e a página será exibida com o form preenchido com os valores atuais, para modificação.


Tire outras dúvidas em nosso CookBook em Português

Back to Top