2013-06-18 41 views
0

我正在製作待辦事項列表。我有一個相互關聯的複選框和文本字段列表。我創建使用jQuery的待辦事項列表,並將其輸出的情況如下:如何匹配列表?

<li name="todo_li" class="todo_items"> 
    <input class="incomplete" name="done_item" id="chk_box1" type="checkbox" checked> 
    <div id="chk_div1">asdf</div> 
    <input type="hidden" name="todo_text" id="todo_text1" value="asdf"> 
    <a class="remove" href="">x</a> 
</li> 
<li name="todo_li" class="todo_items"> 
    <input class="incomplete" name="done_item" id="chk_box2" type="checkbox"> 
    <div id="chk_div1">asdf</div> 
    <input type="hidden" name="todo_text" id="todo_text2" value="asdf"> 
    <a class="remove" href="">x</a> 
</li> 
<li name="todo_li" class="todo_items"> 
    <input class="incomplete" name="done_item" id="chk_box3" type="checkbox" checked> 
    <div id="chk_div1">qwer</div> 
    <input type="hidden" name="todo_text" id="todo_text3" value="qwer"> 
    <a class="remove" href="">x</a> 
</li> 

在我看來,我讓所有的todo_text和done_items下列要求:

todo_text = request.POST.getlist('todo_text')                      
print todo_text                              
done_item = request.POST.getlist('todo_item')                      
print todo_item 

輸出回報:

todo_text= [u'asdf', u'asdf', u'qewr'] 
done_item= [u'on', u'on'] 

如果我創建一個項目,並立即檢查框中,說todo_text數組中的項目0和2,我怎麼能得到done_items匹配?

我是想獨自做一些這些行:

List3 = []                              
    print List3                              
    for i in range(len(todo_text)):                         
     for j in range(len(todo_item)):                        
      if todo_text[i] == todo_item[j]:                       
       List3.append(1)                          
      else:                             
       List3.append(0)                          
    return List3 

我試圖填充這個模型che_box領域和todo_text上述信息字段。

class TaskTodo(models.Model):                            
    chk_box   = models.BooleanField(verbose_name='')                     
    todo_text   = models.CharField(max_length=256, verbose_name="")                 
    submitter   = models.ForeignKey(User, null=True, blank=True)                  
    date_created  = models.DateTimeField(editable=False)                     
    date_updated  = models.DateTimeField(editable=False) 

有什麼建議嗎?

這裏是我使用的形式:

http://jsfiddle.net/Lz6Tq/

+0

你知道使用'Form'會爲你處理所有這些,對吧? –

回答

0

像那樣的形式會給您發佈的數據一樣...

done_item=on&todo_text=asdf&todo_text=asdf&done_item=on&todo_text=qwer 

...這是將是一個痛苦的解析,因爲每個複選框都有相同的name

如果您在value屬性爲每個複選框匹配id添加,那麼你會得到...

done_item=chk_box1&todo_text=asdf&todo_text=asdf&done_item=chk_box3&todo_text=qwer 

...所以request.POST.getlist('done_item')將返回[u'chk_box1', u'chk_box3']代替,從中可以比箱推斷檢查1和3。

+0

雖然這不是確切的答案,但確實有助於我進入正確的方向。感謝您讓我的想法脫離您。 – user1462141

0

我不知道我理解你的問題。如果要檢查每個todo_text如果是在todo_item你可以這樣做

List3 = [1 if e in todo_item else 0 for e in todo_text] 
+0

關閉!無論如何,它到目前爲止都會返回[0,0,0]。保存表單時,我希望能夠在初始保存時設置與todo_text字段相關的複選框。一旦表格已經填充,這很容易。我在創建新項目時被卡住了。這是我創建的表單:http://jsfiddle.net/Lz6Tq/ – user1462141