在JavaScript中遍历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();
}
接下来,我最终想要的是,如果选定的机构在列表中,检查并确保他们的总金额不超过10万美元。
有什么建议吗?
1 个回答
1
我不太清楚你打算怎么使用你添加到上下文中的 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,这样可以简化这些请求。