Created
June 7, 2013 11:14
-
-
Save JuniorLima/5728585 to your computer and use it in GitHub Desktop.
Salvar dois models em um único formulário quando existir uma ForeignKey
This file contains hidden or 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
<form method="POST"> | |
{% csrf_token %} | |
<p><label>Deseja se identificar?</label>{{ form.anonimo }}</p> | |
<div class="control-group"> | |
<p><label>Nome</label>{{ formP.nome }}</p> | |
<p><label>CPF</label>{{ formP.cpf }}</p> | |
<p><label>RG</label>{{ formP.rg }}</p> | |
<p><label>Telefone</label>{{ formP.telefone }}</p> | |
</div> | |
<p><label>Qual é o tipo da sua manifestação?</label>{{ form.objeto }}</p> | |
<p><label>Selecione o departamento que deseja enviar</label>{{ form.unidade }}</p> | |
<p><label>Como deseja receber a resposta?</label>{{ form.resposta_ch }}</p> | |
<p><label>Como você avalia a atual gestão?</label>{{ form.avaliacaogestao }}</p> | |
<legend>Escreva sua manifestação</legend> | |
<p>{{ form.observacao }}</p> | |
<div class="form-actions"> | |
<button type="submit" class="btn btn-primary">Enviar manifestação</button> | |
</div> | |
</form> |
This file contains hidden or 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
class PessoaForm(forms.ModelForm): | |
nome = forms.CharField(max_length=100) | |
cpf = forms.CharField(max_length=11) | |
rg = forms.CharField(max_length=20) | |
telefone = forms.CharField(max_length=15) | |
class Meta: | |
model = Pessoas | |
class ProcessoForm(forms.ModelForm): | |
class Meta: | |
model = Processos | |
observacao = forms.Field(widget=forms.Textarea) | |
objeto = forms.ModelChoiceField(queryset=Objetos.objects.filter(especie__id =9)) | |
unidade = forms.ModelChoiceField(queryset=Unidades.objects.all()) | |
class ManifestacoesForm(ProcessoForm): | |
class Meta: | |
model = Manifestacoes | |
exclude = ['codigo', 'advogados', 'autor', 'orgaos', 'autor_p', 'status_ch', 'ano', 'transferido', 'arquivado', 'ala', 'estante', 'prateleira', 'caixa', 'cancelamento', 'motivo_cancelamento', 'serie', 'orgao', 'provocacao', 'especie', 'manifestacao_ch', 'pessoa', 'nome', 'cpf', 'rg'] |
This file contains hidden or 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
class Pessoas(models.Model): | |
nome = models.CharField('Nome', max_length = 100) | |
class Processos(models.Model): | |
pessoa = models.ForeignKey(Pessoas, verbose_name='Pessoas', blank=True, null=True) | |
class Manifestacoes(Processos): | |
This file contains hidden or 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
def cadastrarmanifestacao(request): | |
# Se dados forem passados via POST | |
if request.method=='POST': | |
form = ManifestacoesForm(request.POST) | |
formP = PessoaForm(request.POST) | |
# se o formulario for valido | |
if form.is_valid() and formP.is_valid(): | |
pes = formP.save() | |
man = form.save(commit=False) | |
man.pessoa = pes | |
man.save() # cria um novo usuario a partir dos dados enviados | |
return render_to_response('ouvidoria/confirmacao.html') | |
else: | |
form = ManifestacoesForm() | |
formP = PessoaForm() | |
return render_to_response('ouvidoria/cadastromanifestacao.html', {'form': form, 'formP': formP}, context_instance = RequestContext(request)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment