Как я могу разрешить моей html странице проверять пользователя с двумя значениями логического поля и отображать его данные с помощью оператора "if"? - PullRequest
0 голосов
/ 02 мая 2020

, поэтому я создал учетную запись и хочу отобразить сведения об этой учетной записи. Поэтому я использовал логические поля для регулирования данных каждой учетной записи на странице html, я не хотел использовать фильтры, потому что в приложении есть определенные функции c, которые я не хотел усложнять. Я создал модель Account_checker, которая использует BooleanFields для регулирования данных. Но если в учетной записи есть два BooleanField = True, как я могу отобразить две информации на основе этих двух BooleanField = True на странице HTML?.

models.py
class Account_checker(models.Model):
    is_Type_A=BooleanField(default=False)
    is_Type_B=BooleanField(default=False)
    is_Type_C=BooleanField(default=False)

html page
{% for player in players %}
    {% if player .is_Type_A %}
       display type A data
    {% elif player.is_Type_B %}
        display type B data
    {% elif player.is_Type_C %} 
        display type C data
    {% elif player.is_Type_A and player.is_Type_B %} #This code isn't working
        display type A data and type B data
    {% elif player.is_Type_B and player.is_Type_C %} #This code isn't working
        display type B data and type C data
   {% elif player.is_Type_B and player.is_Type_C and player.is_Type_C %} #This code isn't working
        display type B data and type C data
    {% endif %}
{% endfor %}

1 Ответ

1 голос
/ 02 мая 2020

Ваш код работает неправильно из-за вашего порядка операций. Подумайте об этом логически, если ожидается выполнение условия {% 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 %}
...