我需要遍历我传递给模板的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
有什么建议吗?
答案 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来简化这些请求。