Цикл по списку Django в JavaScript - PullRequest
1 голос
/ 28 октября 2011

Мне нужно перебрать мой список django, который я передал шаблону.

У меня есть этот код в моем представлении django:

if plan:
    investments = Investment.objects.all().filter(plan = plan).order_by('maturity_date').filter(maturity_date__gte = now)
    for i in investments:
        financial_institution = i.financial_institution
        amount = i.get_current_value(date)
        fi_list.append({
            'fi': financial_institution,
            'amt':amount
        })
    context['list'] = fi_list

Какие выходы:

[<financial_institution: Example> <amount: 5000>]

Теперь я хочу пройтись по этому списку, и, если моя переменная javascript соответствует элементу в списке, выполните дальнейший код. Однако я застрял на том, как это сделать.

Вот мой javascript, использующий jQuery:

function cdic_limit(amount) {
        var limit = 100000.00;
        var list ="{{ list }}";
        var fi = $("#id_financial_institution option:selected").text();

    }

В будущем, в конечном счете, я хочу, чтобы выбранное учреждение было в списке, проверьте и убедитесь, что их общая сумма не превышает $ 100 тыс.

Есть предложения?

1 Ответ

1 голос
/ 28 октября 2011

Я не знаю, что вы собираетесь делать с переменной fi_list, которую вы добавляете в контекст.Если вы планируете систематически перечислять учреждения и их ограничения, например, в виде таблицы, то получение данных amount должно быть достаточно простым, точно так же, как вы извлекали название выбранного финансового учреждения.

Если вы намереваетесь раскрыть пользователю суммы для всех учреждений (что я не думаю, что вы делаете), и под раскрытием я имею в виду, что он существует где-то в HTML-коде, независимо от того, отображает ли его браузер или нет, тогдаЕдинственное, что вы можете сделать, это закодировать fi_list в строку JSON, сделать так, чтобы ваш ответ имел (в теге скрипта) код вроде:

var finInst = jQuery.parseJSON( "{{ jsonString }}" );

function checkLimit(amount) {
    // I don't know what amount is supposed to do.
    if (finInst[jQuery(this).text()] > 100000)
        // do amount > 100000 code
    else
        // amount within limit
}

С кодом django / python, например:

import json
if plan:
    investments = Investment.objects.all().filter(plan = plan).order_by('maturity_date').filter(maturity_date__gte = now)
    fi_list = {}
    for i in investments:
        financial_institution = i.financial_institution
        amount = i.get_current_value(date)
        fi_list[financial_institution] = amount
    context['jsonString'] = json.dumps(fi_list)

И, наконец, всякий раз, когда на веб-странице выбирается вариант учреждения, активируйте функцию checkLimit.

Честно говоря, это действительно плохой код, потому что я думаю, что вы не хотите показывать все эти суммызначения для каждого учреждения (может быть, критически конфиденциальная информация?).Таким образом, единственный надежный способ получения результатов на лету - использовать AJAX для вызова представления django всякий раз, когда выбрано учреждение.Возможно, вы захотите взглянуть на dajaxproject , чтобы упростить эти запросы.

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