Created
August 8, 2012 16:43
-
-
Save gilsondev/3296527 to your computer and use it in GitHub Desktop.
Mostrando como usar o Django Forms
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf8 -*- | |
from django import forms | |
from .models import Foo, Bar, FooBar | |
class FooModelForm(forms.ModelForm): | |
# Essa classe vai usar a instrospecção para gerar o formulário | |
# baseado nos atributos da classe Foo | |
class Meta: | |
model = Foo | |
class BarModelForm(forms.ModelForm): | |
# Ele faz o mesmo acima, mas quando define atributos para essa classe que é | |
# com o mesmo nome de algum atributo do Model, e que usa um Field que encaixa com o | |
# tipo definido no Model, o que for declarado aqui, terá prioridade (ex.: label) | |
# | |
# O campo attr2 do Bar, será inserido no formulário também, mas irá usar o FormField padrão | |
# que o Django define. Na documentação mostra isso: | |
# | |
# https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/#field-types | |
test = forms.CharField(label="Rotulo do campo", required=False) | |
class Meta: | |
model = Bar | |
class BarTermoUsoForm(forms.ModelForm): | |
test = forms.CharField(label="Rotulo do campo", required=False) | |
termo_uso = forms.BooleanField(label="Concordo com o termo de uso") # padrão dos fields é required=True | |
class Meta: | |
model = Bar |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# -*- coding: utf8 -*- | |
from django.db import models | |
class Foo(models.Model): | |
attr1 = models.CharField(u"Atributo 01", max_length=30) | |
attr2 = models.IntegerField(u"Atributo 01") | |
class Meta: | |
db_table = 'foo' | |
def __unicode__(self): | |
return self.attr1 | |
class Bar(models.Model): | |
test = models.CharField(u"Atributo 01", max_length=30) | |
attr2 = models.IntegerField(u"Atributo 01") | |
class Meta: | |
db_table = 'bar' | |
def __unicode__(self): | |
return self.test |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Na classe BarModelForm, você pode inserir um atributo chamado "other" por exemplo, e definir o Field do tipo Textarea. Ele não está no Model, mas ele é do form. Assim, você teria que pegar o valor dele, na view por exemplo, e fazer o que precisa com essa informação.