2011-10-28 54 views
1

我需要遍历我传递给模板的django列表。在javascript中循环浏览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

你的模板代码是什么样的。另外,您为什么要在客户端执行此检查(即使用JavaScript)?一旦你发现一个机构是否超过10万,你打算做什么? – ladaghini

+0

@ladaghini我需要随时做,因为他们选择机构,这就是为什么我使用JavaScript。 – TheLifeOfSteve

回答

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以简化这些请求。