Django - сравнение значений ключей в словарях в двух разных списках

У меня есть два списка словарей, которые я извлек из XML файла с помощью elementtree. Каждый список словарей содержит десятки ключей/значений, но для простоты предположим, что они похожи на следующие:

list1 = [{'id': '100', 'first_name': 'john'}, {'id': '101', 'first_name': 'joe'}]
list2 = [{'id': '100', 'last_name': 'doe'}, {'id': '101', 'last_name': 'bloggs'}]

Я использую Django для создания таблицы с данными и хочу поместить имена (из списка1) и фамилии (из списка2) в одну строку таблицы, где есть совпадение в значениях 'id', но я не могу понять, как это сделать.

Если бы я хотел перечислить их на языке python, я бы использовал:

for v in list1:
    print(v['id'])
    print(v['first_name'])
    for i in list2:
        if i['id'] == v['id']:
            print(i['last_name'])

Но я не могу понять, как написать это с помощью тегов django в шаблоне HTML. Вот что я пробовал (и их вариации):

{% for v in list1 %}
    <tr>
        <td>{{v.id}}</td>
        <td>{{v.first_name}}</td>
        {% for i in list2 %}
            {% if {{v.id}} == {{i.id}} %}
                <td>{{i.last_name}}</td>
            {% endif %}
        {% endfor %}
    </tr>
{% endfor %}

Вы используете {{}} внутри {%%}

Движок шаблонов Django действительно не любит этого.

Запишите его следующим образом:

        {% for i in list2 %}
            {% if v.id == i.id %}
                <td>{{i.last_name}}</td>
            {% endif %}
        {% endfor %}

Сиденотат:

Вы сравниваете идентификаторы. Является ли это связанным объектом? Это одна и та же модель?

Вернуться на верх