2013-02-17 53 views
0

我試圖將一個整數參數Field.choices傳遞給view.py中的函數。但是,我似乎無法完成這項工作。未能將Field.choices整數參數傳遞給view.py中的函數(Django)

具體來說,就我而言,我想使用Field.choices整數參數來決定用戶希望某個特定對象切換到哪個狀態。目前,我對每種類型的狀態變化都有查看功能,而且它們都是相同的。所以,這個目標是傾向於更乾的代碼。

示例情況

下面是一些HTML代碼(其具有訪問診斷和diagnostic_filter對象):

  <a href="{% 
       url reports.views.mark 
       diagnostic.id, 
       diagnostic_filter.FALSE %}" 
       class="btn"> 
       False Positive 
      </a> 

最初,這種類型的按鈕/鏈接的用戶點擊。

我想通過整數diagnostic_filter.FALSE(這是diagnostic_filter的三種可能狀態之一),以一個廣義的「標記」功能:

def mark(request, diagnostic_id, state): 
    #Code to change state... 

該「標記」的功能,如圖所示,應通過並將診斷過濾器對象(與診斷對象相關)的狀態更改爲FALSE。

這是我在urlconf.py相應行的嘗試:

url(r'^diagnostic/(?P<diagnostic_id>\d+)/(?P<state>\d+)/$', 'mark'), 

這裏是我的models.py我diagnostic_filter級車型:

class DiagnosticFilter(models.Model): 
FALSE = 1 
LOW = 2 
HIGH = 3 
STATES = (
    (FALSE, 'False Positive'), 
    (LOW, 'Low Priority'), 
    (HIGH, 'High Priority'), 
) 
state = models.IntegerField(choices=STATES) 

我傳遞的診斷和diagnostic_filter我的模板使用:

return render_to_response(
    'reports/diagnostic.html', 
    {diagnostic, 
    diagnostic_filter}, 
    context_instance=RequestContext(request) 
) 

這是最好的解決方法?我做錯了什麼?看起來,當我用按鈕加載頁面時,我在行中找到了一個錯誤,該行沒有找到'[FILE URL HERE] .mark'參數'(108383,Undefined)'和關鍵字參數'{}'。

回答

0

的可能性是,你實際上有訪問diagnostic_filter對象,或者它是不是類DiagnosticFilter。您收到的錯誤顯示模板的值爲diagnostic_filter.FALSE爲'未定義',這很奇怪,因爲您沒有在模型中顯示該值,並且Django通常的行爲是將未知屬性顯示爲None。你能告訴你如何將diagnostic_filter傳遞給模板嗎?

+0

我的模板絕對有權訪問diagnostic_filter。我已經在我的模板中成功使用了很長一段時間,昨天在發佈問題之前,雙重檢查了diagnostic_filter.FALSE的值爲1.我通過插入

{{diagnostic_filter.FALSE}}

來實現此目的。請回顧一下我的問題,看看我是如何傳遞diagnostic_filter的。乾杯。 – Akyidrian 2013-02-18 19:00:04

+0

忽略我最近的評論。偶爾發現diagnostic_filter未定義。這是有意完成的(換句話說,這是一個只在實現代碼中發現的設計決策)。謝謝你的時間。 – Akyidrian 2013-02-19 03:53:58