2012-08-08 48 views
0

我目前正在嘗試使用JavaScript來顯示額外的表單字段,如果產品選擇在檢查此方法的方法上返回true。儘管我爲表單選擇了onchange部分,但我仍在努力實際訪問產品方法。我假設我必須使用我沒有經驗的json。我希望做一下if語句中使用方法返回的以下內容。我試圖在目前使用的代碼是(我知道它只是顯示一個警告大氣壓,但我的首要任務是得到它的工作):Django獲取JSON模型方法的價值

function openingCheck(optionValue){ 
    {% check_opening_date as json %} 
    var checkOpeningDateJSON = {{json|safe}}; 

    if(checkOpeningDateJSON) 
     alert(optionValue); 

}; 

其中採用:

@register.tag(name="check_opening_date") 
def check_opening_date(parser, token): 
"""return whether the product should show the opening date or not""" 

product = Product.objects.get(pk=productID) 

return serializers.serialize('json',product.show_opening_date()) 

的問題我遇到的是我不知道如何將optionValue傳遞給check_opening_date函數以及如何返回product.show_opening_date()的值。

任何提示將不勝感激。

+0

您是否試圖在加載頁面之後異步地從服務器獲取數據,然後基於該數據顯示錶單域? – 2012-08-08 11:42:43

+0

我想這樣..我希望當用戶選擇一個產品,其中show_opening_date返回true,然後我會顯示輸入開始日期的表單字段。由於不是所有的產品都返回true,我的猜測是必須使用json找出產品是否返回true,然後根據需要顯示錶單域。如果這是有道理的。 (我不確定這是否可能是公平的)。 – 2012-08-08 11:47:43

+0

'show_opening_date'是'Product'模型中的一個方法嗎? – 2012-08-08 11:50:44

回答

0

有兩種方法。

  1. 當渲染頁面時,將show_opening_date()的結果與表格select一起保存。這意味着對於列出的每個產品,您都可以在某處創建相應的隱藏輸入,或者將結果保存爲select中的某個屬性或其他內容。選擇產品時,只需使用javascript檢查此隱藏輸入或屬性的值。加載後服務器不需要與服務器進行交互。 (對服務器有一個請求)

  2. 或者,您只需顯示產品。選擇其中一個時,您使用ajax與該產品的ID聯繫。服務器運行product.show_opening_date()並返回json的結果。 (有大量的服務器請求;最初和每次用戶選擇一個產品)

你有沒有什麼意義。請記住,模板(以及所有模板變量和模板標籤)在頁面呈現時進行彙編,因此它們沒有任何javascript執行的概念(或onchange事件等)。您似乎對模板標籤的概念感到困惑。這些應該用於模板邏輯,以顯示已經在視圖中聚合的信息(通常 - 它不是石頭)。

+0

由於產品是動態填充的,我將使用選項2運行。謝謝! – 2012-08-08 13:07:04