我正在做一个待办事项列表。我有一个彼此相关的复选框和文本字段列表。我用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)
有什么建议吗?
以下是我正在使用的表单:
答案 0 :(得分:0)
我不确定我理解你的问题。如果你想检查每个todo_text,如果它在todo_item中,你可以做类似的事情
List3 = [1 if e in todo_item else 0 for e in todo_text]
答案 1 :(得分:0)
这样的表格会为你提供像......
这样的POST数据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个框。