Ich habe eine Reihe von Auswahlfeld Formularfelder, die ich in der Vorlage mit benutzerdefinierten Markup als Liste ausgeben muss. Dazu habe ich einen Include erstellt, der das aktuelle Formularfeld als Argument übergeben wird.Django Vergleich Formularfeld Wert mit ausgewählten Wert
Ich kann die Liste der Optionen durchlaufen, um die Liste ohne Probleme zu erstellen. Mein Problem ist, dass ich über der Liste der Optionen entweder die Formularbezeichnung oder den aktuell ausgewählten Wert anzeigen muss. Dies ist der Code, den ich habe, dies zu tun:
{% if field.value %}
{% for value, option in field.field.choices %}
{% if value == field.value %}
{{ option }}
{% endif %}
{% endfor %}
{% else %}
{{ field.label }}
{% endif %}
Wenn zum Beispiel value
in dem obigen Code ist 1, und field.value
ist auch 1, wird der Gleichheitstest nicht funktioniert und das Bit Code innerhalb der if-Anweisung wird nicht ausgeführt. Ich vermutete, es auf den Datentyp der beiden Werte sein könnte ich den Vergleich, also versuchte ich sowohl auf eine ganze Zahl Gießen wie folgt:
{% if field.value %}
{% for value, option in field.field.choices %}
{% if value|add:"0" == field.value|add:"0" %}
{{ option }}
{% endif %}
{% endfor %}
{% else %}
{{ field.label }}
{% endif %}
Dieser arbeitete für den Fall in Ordnung, wo die Werte in der Auswahlbox waren Ganzzahlen. Manchmal haben meine Auswahlfelder boolesche Werte als Wert, daher funktioniert der Vergleich in diesem Fall nicht mit dem angewandten Ganzzahl-Casting.
Wie kann ich die beiden Werte vergleichen, unabhängig davon, welche Art von Daten verglichen werden?