2017-04-08 38 views
0

當我有以下腳本,通過在url一個jQuery數組:Django的 - 無效的與底座10字面對於int():「」傳遞數組

jQuery(document).ready(function($) { 
     $("#continue").click(function() { 
      var selected = $("#meds").bootgrid("getSelectedRows"); 
      var url = "{% url 'meds:prescription' 'test' %}"; 
      url = url.replace('test', selected); 
      window.location = url; 
     }); 
    }); 

和以下觀點:

class PrescriptionView(generic.ListView): 
    template_name = 'meds/prescription.html' 
    context_object_name = 'meds' 
    model = Medicament 

    def get_queryset(self): 
     return Medicament.objects.filter(id__in=self.kwargs['selected']) 

選定的陣列看起來像[3, 4]和傳遞的url,貌似http://127.0.0.1:8000/prescription/3,4/

我不斷收到錯誤:

ValueError at /prescription/3,4/ 
invalid literal for int() with base 10: ',' 

我只是認爲通過將被視爲一個python列表中的數組,所以我在過濾器中使用id__in這樣我就可以將IDS比較列表/陣列的項目。

回答

2

id__in is expecting an array。 你傳遞的是一個字符串。引擎蓋下,它正試圖訪問數組的各個元素int格式

你可以做這樣的事情:

ids = map(int, self.kwargs['selected'].split(",")) 
return Medicament.objects.filter(id__in=ids) 

基本上,要拆分的分隔符,和創建數組IDS。

演示:

>>> x = "3,4" 
>>> map(int, x.split(",")) 
[3, 4] 
>>> 
相關問題