У меня есть свойство в модели Circuit, которое рассчитывает для каждого диаметра соответствующую общую длину трубы для этого диаметра. Код приведен ниже:
@property
def pipe_lengths(self):
components = Component.objects.filter(circuit=self)
diameters = Diameter.objects.filter(project=self.system.project, material = self.material_type)
pipe_dict = {}
length = 0
for diameter in diameters:
for component in components:
if component.diameter == diameter:
length += component.length
pipe_dict[diameter] = length
length = 0
print("PIPE_DICT IS: " + str(pipe_dict))
return pipe_dict
Кажется, это работает нормально, вывод оператора print кажется нормальным. Однако теперь я хочу получить доступ к этому словарю в своем шаблоне, ниже приведен упрощенный код, который у меня уже есть:
{% extends 'base.html' %}
{% block content %}
<h2>Circuit name: {{ circuit.circuit_name }}
<h3><strong>Piping lengths</strong></h3>
<table border="1" style="width:100%">
<tbody>
<tr>
<td><h3>nominal diameter</h3></td>
<td><h3>length [m]</h3></td>
</tr>
{% for diameter in circuit.pipe_lengths %}
<tr>
<td><h3>{{ diameter.nom_diameter }}</h3></td>
<td><h3>{{ circuit.pipe_lengths[diameter] }}</h3></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
Я могу получить доступ к
diameter.nom_diameter
.
Однако, когда я пытаюсь получить доступ к определенному значению длины с помощью кода:
circuit.pipe_lengths[diameter]
это не работает. Я получаю следующую ошибку:
TemplateSyntaxError at /solgeo/28/system/182/circuit/295/
Could not parse the remainder: '[diameter]' from 'circuit.pipe_lengths[diameter]'
Помощь очень ценится.