Por favor, pode me ajudar a entender o que fiz de diferente, no caso do campo "Classe de vôo", pois o texto que é apresentado no resultado da consulta é ECON e não Econômica. Abaixo abro o meu código para analise.
classe_viagem.py
from django.db import models
from django.utils.translation import gettext_lazy as _
class ClasseViagem(models.TextChoices):
ECONOMICA = 'ECON', _('Econômica')
EXECUTIVA = 'EXEC', _('Executiva')
PRIMEIRA_CLASSE = 'PRIC', _('Primeira Classe')
minha_consulta.html
{% extends "base.html" %} <!-- Herdar o trecho html -->
{% block content %}
<section class="col-8">
<p>Sua origem é: {{ form.origem.value }}</p>
<p>Seu destino é: {{ form.destino.value }}</p>
<p>Sua data de ida é: {{ form.data_ida.value }}</p>
<p>Sua data de volta é: {{ form.data_volta.value }}</p>
<p>Pesquisa realizada: {{ form.data_pesquisa.value }}</p>
<p>Classe de vôo : {{ form.classe_viagem.value }}</p>
<p>Informações extras: {{ form.informacoes.value }}</p>
<p>Email: {{ pessoa_form.email.value }}</p>
</section>
{% endblock %}
views.py
from django.shortcuts import render
from passagens.forms import PassagemForms, PessoaForms
def index(request):
form = PassagemForms()
pessoa_form = PessoaForms()
contexto = {'form': form, 'pessoa_form':pessoa_form}
return render(request, 'index.html', contexto)
def revisao_consulta(request):
if request.method == 'POST':
form = PassagemForms(request.POST)
pessoa_form = PessoaForms(request.POST)
if form.is_valid():
contexto = {'form': form, 'pessoa_form':pessoa_form}
return render(request, 'minha_consulta.html', contexto)
else:
print('Form Inválido')
contexto = {'form': form}
return render(request, 'index.html', contexto)
forms.py
from tkinter import Widget
from django import forms
from django.forms import Textarea
from tempus_dominus.widgets import DatePicker
from datetime import datetime
from passagens.classe_viagem import tipos_de_classe
from passagens.validation import *
from passagens.models import Passagem, ClasseViagem, Pessoa, pessoa
class PassagemForms(forms.ModelForm):
data_pesquisa = forms.DateField(label='Data da pesquisa', disabled=True, initial=datetime.today)
class Meta:
model = Passagem
# fields = ['origem', 'destino', 'data_ida', 'data_volta','classe_viagem', 'informacoes'] ou usar o menos trabalhoso
fields = '__all__'
labels = {'data_ida':'Data de ida','data_volta':'Data de volta', 'classe_viagem':'Classe do vôo','informacoes':'Informações'}
widgets = {'data_ida':DatePicker(),'data_volta':DatePicker()}
def clean(self):
origem = self.cleaned_data.get('origem')
destino = self.cleaned_data.get('destino')
data_ida = self.cleaned_data.get('data_ida')
data_volta = self.cleaned_data.get('data_volta')
data_pesquisa = self.cleaned_data.get('data_pesquisa')
lista_de_erros = {}
campo_tem_algum_numero(origem,'origem', lista_de_erros)
campo_tem_algum_numero(destino,'destino', lista_de_erros)
origem_destino_iguais(origem, destino, lista_de_erros)
data_ida_maior_que_data_volta(data_ida, data_volta, lista_de_erros)
data_ida_menor_que_hoje(data_ida, data_pesquisa, lista_de_erros)
if lista_de_erros is not None:
for erro in lista_de_erros:
mensagem_erro = lista_de_erros[erro]
self.add_error(erro, mensagem_erro)
return self.cleaned_data
class PessoaForms(forms.ModelForm):
class Meta:
model = Pessoa
exclude = ['nome']
index.html
{% extends "base.html" %} <!-- Herdar o trecho html -->
{% block content %}
{% load widget_tweaks %}
<form action="{% url 'minha_consulta'%}" method="post">
{% csrf_token %} <!-- Nova pagina em outro lugar {{ form }} -->
{% for field in form.visible_fields %}
<div class="form-group">
<label for="{{field.id_for_label}}">{{field.label}}</label>
{{field|add_class:'form-control'}}
</div>
{% for error in field.errors %}
<section class="alert alert-danger" role="alert">
{{ field.errors }}
</section>
{% endfor %}
{% endfor %}
{% for field in pessoa_form.visible_fields %}
<div class="form-group">
<label for="{{field.id_for_label}}">{{field.label}}</label>
{{field|add_class:'form-control'}}
</div>
{% endfor %}
<input type="submit" value="Ok" class="btn btn-success">
</form>
{% endblock %}