Django шаблон - итерация списка кортежей, каждый кортеж - строка, словарь - PullRequest
1 голос
/ 11 марта 2020

У меня есть словарь, который был превращен в отсортированный список, который создает следующее:

monthly_spend_provider = sorted(monthly_spend_provider.items(), key=lambda item: item[1]['cost'], reverse=True)
monthly_spend_provider
[
('PROVIDER A', {'cost': Decimal('10000'), 'symbol': '£'}), 
('PROVIDER B', {'cost': Decimal('9000'), 'symbol': '$'}), 
('PROVIDER C', {'cost': Decimal('8000'), 'symbol': '$'}), 
('PROVIDER D', {'cost': Decimal('7000'), 'symbol': '£'}), 
]

Теперь я безуспешно пытаюсь получить доступ к данным в кортежах в шаблоне Django.

Я думал, что сработало бы следующее, но у него нет

{% for provider in monthly_provider_country %}
    {% for data in provider %}
    <h3>{{ provider }} {{ data.symbol }} {{ data.cost|currency }}</h3>
    {% endfor %}
{% endfor %}

, я могу сделать это в шаблоне или есть способ превратить отсортированный список обратно в более простой формат для вывод в шаблон?

РЕДАКТИРОВАТЬ: оригинальный словарь

>>> monthly_spend_provider
{
    'PROVIDER B': {
        'cost': Decimal('9000'), 'symbol': '$'
        },
    'PROVIDER A': {
        'cost': Decimal('10000'), 'symbol': '£'
        },
    'PROVIDER D': {
        'cost': Decimal('8000'), 'symbol': '$'
        },
    'PROVIDER C': {
        'cost': Decimal('7000'), 'symbol': '£'
        }
}

Спасибо

Ответы [ 3 ]

2 голосов
/ 11 марта 2020

Я считаю, что вам нужно.

{% for provider, d in monthly_provider_country %}
    <h3>{{ provider }} {{ d.symbol }} {{ d.cost|currency }}</h3>
{% endfor %}
0 голосов
/ 11 марта 2020

Попробуйте это ниже:

{% for provider in monthly_provider_country %}
    {% for data in provider %}
    <h3>{{ data[0] }} {{ data[1].symbol }} {{ data[1].cost|currency }}</h3>
    {% endfor %}
{% endfor %}
0 голосов
/ 11 марта 2020

Я думаю, вы должны написать свой <h3> тег, как показано ниже ...

<h3>{{ data.0 }} {{ data.1.symbol }} {{ data.1.cost|currency }}</h3>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...