Передача цикла из 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 %}