2013-06-18 105 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