Django更新一行

Django更新一行,django,Django,嗨,我正试图更新django中的一行,但我得到了错误 update_form() takes exactly 2 arguments (1 given) 这是我的密码: view.py: def update_form(request, id): if request.method == 'POST': a=newleave.objects.get(id=id) form = leave_application(request.POST, instanc

嗨,我正试图更新django中的一行,但我得到了错误

update_form() takes exactly 2 arguments (1 given)
这是我的密码:

view.py:

def update_form(request, id):
    if request.method == 'POST':
        a=newleave.objects.get(id=id)
        form = leave_application(request.POST, instance=a)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('successful.html')
    else:
        a=newleave.objects.get(id=id)
        form = leave_application(instance=a)
    return render_to_response('update_form.html'{'form':form},
context_instance=RequestContext(request))
form.py:

class leave_application(forms.ModelForm):
    class Meta:
        model = newleave
        fields =('First_Name', 'Last_Name', 'department', 'position', 'leave_type',             'Specify_details', 'start_Date', 'end_date', 'total_working_days', 'username') 
更新_form.html:

<form action ="/update_form/" method="post">{%csrf_token%}
<table>
{{form.as_table}}
</table>
<br>
<input type="submit" name="submit" value="Save Record" >  
{%csrf\u令牌%}
{{form.as_table}}


有人能告诉我我做错了什么吗?

问题可能出在您的URL.py中

update\u表单
视图采用参数
id
,因此您应该将其包含在url模式中

url(r'^update_form/(?P<id>\d+)/$', update_form, name='update_form')
并将其包括在形式行动中:

<form action ="/update_form/{{ id }}/" method="post">{%csrf_token%}
{%csrf\u令牌%}
使用url标记会稍微好一些:

<form action ="{% url 'update_form' %}" method="post">{%csrf_token%}
{%csrf\u令牌%}

您应该将行的
id
传递到
更新表单
视图:

<form action="{% url 'update_form' id %}" method="post">

url.py中:

url(r'^update_form/(?P<id>\d+)/$', update_form, name='update_form'),
url(r'^update\u form/(?P\d+/$),update\u form,name='update\u form'),
url(r'^update_form/(?P<id>\d+)/$', update_form, name='update_form'),