django中的自定义表单更新

时间:2013-09-13 08:36:32

标签: python mysql django error-handling

我尝试更新自定义表单,为用户新条目和用户更新使用相同的表单。在提交代码我使用if else进行更新和提交,它显示错误“字符串索引必须是整数,而不是str”

views.py: -

def applicationvalue(request):
    if request.method == 'POST':
        if request.method['usubmit'] == 'new':
            getappid = request.POST['appid']
            getjobtitle = request.POST['jobtitle']
            getodesk = request.POST['odeskid']
            getspecification = request.POST['clientspecification']
            getnotes = request.POST['notes']
            request.session['getappid'] = getappid
            getintable = applicationform(user_id = request.user.id , app_id = getappid, job_title = getjobtitle, odesk_id = getodesk, client_specification = getspecification, job_type = request.POST['jobtype'], notes = getnotes)
            getintable.save()
            return HttpResponseRedirect('/tableview/')

        else:
            request.method['usubmit'] == 'Update'
            saveapplid = request.POST['appid']
            savejobtitle = request.POST['jobtitle']
            saveodesk = request.POST['odeskid']
            savespecification = request.POST['clientspecification']
            savenotes = request.POST['notes']

            saveapp = applicationform.objects.get(app_id = saveapplid)
            saveapp.job_title = savejobtitle
            saveapp.odesk_id = saveodesk
            saveapp.user_specification = savespecification
            saveapp.notes = savenotes
            saveapp.save()  
            return HttpResponse(1)
#       return HttpResponseRedirect('/tableview/')

    else:
        return render_to_response('registration/applicationform.html')

此代码运行时显示错误 “字符串索引必须是整数,而不是str”

1 个答案:

答案 0 :(得分:2)

request.method是一个字符串(您刚刚在第一个"POST"语句中测试它是否等于if)!

您打算反对request.POST['usubmit']进行测试吗?

该行:

if request.method['usubmit'] == 'new':

会抛出错误,但也许你想要:

if request.POST['usubmit'] == 'new':

代替。而且,行:

else:
    request.method['usubmit'] == 'Update'

不要做你认为他们做的事。对于第二个块,如果usubmit等于'Update',您可能希望测试

elif request.POST['usubmit'] == 'Update':