Нахождение 2 значений при наличии в списке в шаблоне Django

У меня есть следующий список под названием `` :[(2, 'Flat Bench'), (1, 'Flat Bench'), (3, 'Flat Bench')]

Я пытаюсь найти, доступны ли b.order, которое является первым числом, и e.name, которое является второй строкой, из шаблона django. В своем испытании я убедился, что b.order равно 2, а e.name - это 'Flat Bench'.

Вот шаблон django:

  {% if b.order and e.name in all_logs %}
  available
  {% else%}
  not available
  {% endif %}

В моем случае нет никакой ошибки, просто всегда показывает недоступно, даже если оно доступно.

Я не уверен, какое изменение я должен сделать, чтобы этот код заработал.

Попробуйте следующее:

{% if b.order in all_logs and e.name in all_logs %}
  available
  {% else%}
  not available
{% endif %}

Таким образом, он проверяет, есть ли каждый элемент в списке отдельно. Если они оба есть, (независимо от того, отличается ли индекс), то будет показано available.

Ну, я бы предложил создать пользовательские теги, как описано здесь: https://docs.djangoproject.com/en/4.1/howto/custom-template-tags/

Ваша пользовательская функция должна выглядеть следующим образом:

my_custom_tags.py

from django import template

register = template.Library()


@register.simple_tag
def tuple_check(items, key, value):
    return (key, value) in items

Ваш шаблон должен содержать следующее:

{% load my_custom_tags %}
...
some codes here
...

{% tuple_check your_list b.order e.name as item_check_result %}

{% if item_check_result %}
Available
{% else %}
Not Available
{% endif %}
Вернуться на верх