私は、カスタムマークアップをテンプレートとして出力する必要があるいくつかの選択ボックスフォームフィールドをリストとして持っています。これを行うために、現在のフォームフィールドを引数として渡すインクルードを作成しました。フォームフィールドの値と選択した値を比較する
オプションのリストをループして問題なくリストを作成できます。私の問題は、フォームラベル、または現在選択されている値のいずれかを表示するのに必要なオプションのリストの上にあることです。
{% if field.value %}
{% for value, option in field.field.choices %}
{% if value == field.value %}
{{ option }}
{% endif %}
{% endfor %}
{% else %}
{{ field.label }}
{% endif %}
例えば上記のコードでvalue
が1であり、field.value
も1である場合には、平等のテストが機能しないとビット:これは私がこれをしなければならないコードでありますif文内のコードは実行されません。私はそれがダウンIが比較された2つの値のデータ型にあるかもしれないと推測するので、次のようにIは、整数の両方をキャストしようとした:
{% 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 %}
これは場合でうまく働い選択ボックスの値は整数でした。しかし、時には私の選択ボックスに値としてブール値があるので、この場合、整数キャストが適用されても比較は機能しません。
どのような種類のデータを比較していても、2つの値を安全に比較できますか?