Доступ к словарю в шаблоне Django - PullRequest
0 голосов
/ 31 августа 2018

У меня есть свойство в модели 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]'

Помощь очень ценится.

1 Ответ

0 голосов
/ 31 августа 2018

Просто

{% for diameter, length in circuit.pipe_lengths.items %}
<tr>
  <td><h3>{{ diameter.nom_diameter }}</h3></td>
  <td><h3>{{ length }}</h3></td>
</tr>
{% endif %}

должен сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...