在javascript中循环遍历django列表

时间:2011-10-28 16:50:25

标签: javascript jquery python django

我需要遍历我传递给模板的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();

    }

在路上,我最终想要的是,如果选定的机构在列表中,检查并确保其总金额不超过$ 100k

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我不知道您打算对添加到上下文的fi_list变量做什么。如果您计划以系统的方式列出机构及其限制(例如表格),那么检索amount数据的方式应该与检索所选金融机构名称的方式非常相似。< / p>

如果您打算向用户透露所有机构的金额(我认为您不这样做),并且透露我的意思是它存在于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来简化这些请求。