Django проверяет массив внутри массива и изменяет шаблон

#arrays #django #django-templates #django-template-filters

#массивы #django #django-шаблоны #django-template-filters

Вопрос:

у меня есть строка массива

 setime = ["00:00", "00:30", "01:00", "01:30", "02:00", "02:30", "03:00", "03:30", "04:00", "04:30", "05:00", "05:30", "06:00", "06:30", "07:00", "07:30", "08:00", "08:30", "09:00", "09:30", "10:00", "10:30", "11:00", "11:30", "12:00", "12:30", "13:00", "13:30", "14:00", "14:30", "15:00", "15:30", "16:00", "16:30", "17:00", "17:30", "18:00", "18:30", "19:00", "19:30", "20:00", "20:30", "21:00", "21:30", "22:00", "22:30", "23:00", "23:30"] 
 

и я хочу проверить

в поле зрения

  myListTime= checkDateTime.objects.all().filter(Teacher_id = 1)
 

я пробовал в шаблоне

 {% for i in setime %}
                <ul>
                    {% for j in myListTime %}
                        {% if j.cuTime in i %}
                            <li class="active">{{ i }}</li>
                        {% else %}
                            <li>{{ i }}</li>
                        {% endif %}
                    {% endfor %}
                </ul>
                {% endfor %}
 

мне нужен такой результат, если данные совпадают, у li есть активный класс

введите описание изображения здесь

в БД

Комментарии:

1. Как значение времени связано с checkDateTime объектами? Есть ли для этого поле?

2. из-за недостатка информации я повторно отредактировал свой вопрос. Я попробовал {% if j.cuTime in i %} это в моем шаблоне. Но не работает.

Ответ №1:

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

Если у вас есть список, вы можете __in проверить, существует ли список значений в значениях для поля.

 setime = ["00:00", "00:30", ..., "22:30", "23:00", "23:30"] 

myListTime_with_time = checkDateTime.objects.all().filter(Teacher_id=1, cuTime__in=setime)

myListTime_without_time = checkDateTime.objects.all().filter(Teacher_id=1).exclude(cuTime__in=setime)