2011-10-28 53 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以簡化這些請求。