django为未选中的复选框保存一个值

时间:2013-04-22 12:22:35

标签: html django python-2.7

// // MyTemplate的

  <tr>
      <td><input  type="text" name="language1" id="language1" /></td>
      <td><input  type="checkbox" name="read1" id="read1" value="yes" /></td>
      <td><input  type="checkbox" name="write1" id="write1" value="yes" /></td>
      <td><input  type="checkbox" name="speak1" id="speak1" value="yes" /></td>
    </tr>
    <tr>
      <td><input  type="text" name="language1" id="language1" /></td>
      <td><input  type="checkbox" name="read1" id="read1" value="yes" /></td>
      <td><input  type="checkbox" name="write1" id="write1" value="yes" /></td>
      <td><input  type="checkbox" name="speak1" id="speak1" value="yes" /></td>
    </tr>

如果选中复选框,我想在我的数据库中保存yes,

如果取消选中该复选框,我想将no保存到db,..

怎么做?

修改

def edit_other_info(request):
    if request.method == "POST":

        user = request.POST.get('user_id')

        language1 = request.POST.get('language1')
        read1 = request.POST.get('read1')
        write1 = request.POST.get('write1')
        speak1 = request.POST.get('speak1')

        language2 = request.POST.get('language2')
        read2 = request.POST.get('read2')
        write2 = request.POST.get('write2')
        speak2 = request.POST.get('speak2')
        p=language(user_id=user,language1=language1,read1=read1,write1=write1,
        speak1=speak1,language2=language2,read2=read2,write2=write2,speak2=speak2)
        p.save()

        return HttpResponseRedirect('/accounts/Profile/')
    else:

        details1 = language.objects.filter(user_id=request.user.id)
        return render_to_response('registration/language.html', {"details":details, "details1":details1}, context_instance=RequestContext(request))

提前致谢..

2 个答案:

答案 0 :(得分:3)

测试复选框ID是否在post参数中,如下所示:

def myview(request):
   if request.method == 'POST':
      read1_val = "read1" in request.POST
      MyModel(read1=read1_val).save()

如果它在那里则是“是”。如果它不在那里那就是“不”。

更多hereherehere

答案 1 :(得分:3)

如果为所有复选框提供通用名称,则可以使用

检索值
options = request.POST.getlist('name')

如果未选中任何内容,则返回空列表。