Передача цикла из view.py в html-шаблон в Django

Я пытаюсь получить данные в моей модели "Machines" и затем мне нужно получить дополнительную информацию из другой таблицы, связанной с каждой машиной. Я пытаюсь использовать приведенный ниже код в views.py и вывести его на указанную html-страницу.

def allmachinesLOGO(request):
    machines=Machine.objects.all()
    c=""
    for m in machines:
        if m.tb_order_set.filter(status="2").exists():
            c="2"
        else:
            c="0"
    
    context ={'machines':machines,'condition':c}
    return render(request,'pline/machineslogos.html',context)
{% if condition == "2"  %}
            
                    <h4> working</h4>
                    <img class="btn-circle" style="width: 15px" src="{% static 'images/icons/icons8-green-circle-48.png' %}" alt="image" />
                  {% else %}
                      <h4>stop</h4>
                          {{ condition }}
                    <img class="btn-circle" style="width: 15px" src="{% static 'images/icons/icons8-red-circle-48.png' %}" alt="image" />
                    {% endif %}

как правильно передать цикл из views.py в шаблон в Django

В представлении, на каждой итерации цикла, я создаю словарь с двумя значениями: 'machines', 'status' и помещаю его в список aaa. В шаблоне я сначала отобразил все строки, а после: 'ниже строки после фильтрации' применил условное выражение if m.status != '0'.

Либо удалите строку в представлении:

else:
     aaa.append({'machines': m, 'status': '0'})

тогда строка с 'machines': m, 'status': '0' не будет записана.

Возможно, существует способ без цикла фильтровать по вторичной модели. Было бы интересно узнать, существует ли такой способ.

views.py

def allmachinesLOGO(request):
    machines = Machine.objects.all()
    aaa = []
    for m in machines:
        if m.tb_order_set.filter(status='2').exists():
            aaa.append({'machines': m, 'status': '2'})
        else:
            aaa.append({'machines': m, 'status': '0'})

    context = {'context': aaa}

    return render(request, 'pline/machineslogos.html', context)

templates

{% for m in context %}
<p>{{ 'machines' }} : {{ m.machines }} {{ 'status' }} : {{ m.status }} </p>
{% endfor %}

<p>{{ 'below line after filtering' }}</p>

{% for m in context %}
{% if m.status  != '0' %}
<p>{{ 'machines' }} : {{ m.machines }} {{ 'status' }} : {{ m.status }} </p>
{% endif %}
{% endfor %}
Вернуться на верх