Ваш код работает неправильно из-за вашего порядка операций. Подумайте об этом логически, если ожидается выполнение условия {% elif player.is_Type_A and player.is_Type_B %}
, то это означает, что логически {% if player .is_Type_A %}
также должно выполняться (так как is_Type_A
- Истина) ... но ваш двойной логический элемент заключен в elif
, это означает, что он будет только работать, если условия до этого не выполняются, а это не так.
Чтобы это работало, вы можете: 1) изменить порядок кода для более сложных условий; на первом месте, чтобы не закорачивать их.
2) Вложите ваши условия, чтобы иметь каскадный логический поток.
например:
1)
{% for player in players %}
{% if player.is_Type_A and player.is_Type_B and player.is_Type_C %}
display type A, type B data and type C data
{% elif player.is_Type_B and player.is_Type_C %}
display type B data and type C data
{% elif player.is_Type_A and player.is_Type_B %}
display type A data and type B data
{% elif player.is_Type_C %}
display type C data
{% elif player.is_Type_B %}
display type B data
{% elif player.is_Type_A %}
display type A data
{% endif %}
{% endfor %}