Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

276
Visualizações
¿Cómo mostrar el texto de ChoiceField a través de la plantilla de Django a un usuario?

modelos.py:

 class Person(models.Model): title=models.CharField(max_length=11) name=models.CharField(max_length=100) gender=models.CharField(max_length=11)

formularios.py:

 class PersonForm(ModelForm): GENDER_SELECT = ( ('f', 'Female'), ('m', 'Male'), ('o', 'Other'), ) TITLE_SELECT = ( ('0', 'Mr.'), ('1', 'Mrs.'), ('2', 'Ms.'), ('3', 'Mast.'), ) title=forms.CharField(widget=forms.RadioSelect(choices=TITLE_SELECT, attrs={'class': 'form-check-inline'})) gender=forms.CharField(widget=forms.RadioSelect(choices=GENDER_SELECT, attrs={'class': 'form-check-inline'})) class Meta: model=Person fields='__all__'

Ahora, a continuación se muestran las dos formas en que traté de obtener la salida de datos a la página web, pero la primera no devuelve nada y la segunda devuelve el valor de la base de datos de la elección, en lugar del texto que el usuario seleccionó. Quiero que el usuario vea Sr. o Sra. o Sra. o Mast. y no 0/1/2/3. ¿Que esta mal aquí?

modelo:

1

 {% for rp in report %} <td class="design">{% if rp.title == 0 %} Mr. {% elif rp.title == 1 %} Mrs. {% elif rp.title == 2 %} Ms. {% elif rp.title == 3 %} Mast. {% endif %}</td> {% endfor %}

2

 {% for rp in report %} <td class="design">{{rp.title}}</td> {% endfor %}
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La primera solución no funciona porque el title es una str y lo está comparando con números enteros. A continuación funcionará:

 {% for rp in report %} <p> {% if rp.title == '0' %} Mr. {% elif rp.title == '1' %} Mrs. {% elif rp.title == '2' %} Ms. {% elif rp.title == '3' %} Mast. {% endif %} </p> {% endfor %}

Una mejor solución es crear una etiqueta de plantilla .

 # templatetags/report_tags.py from django import template register = template.Library() titles = { '0': 'Mr.', '1': 'Mrs.', '2': 'Ms.', '3': 'Mast.', } @register.simple_tag def person_title(title): return titles.get(title)

Y dentro de tu plantilla:

 {% load report_tags %} {% for rp in report %} <td class="design"> {% person_title rp.title %} </td> {% endfor %}

¡Mucho más limpio!

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda