将参数传递给Django中的表单时出错

时间:2014-09-12 23:01:06

标签: python django django-forms django-views

我是django的新手,我尝试更新一些数据,将id_provider从form1传递给form2 form2必须显示提供者的数据

我有一个带有一点形式的html页面(form1):                          

是一个简单的输入文本,用户可以在其中写入数字。 数字作为参数传递给其他形式。

我的forms.py:

class ConfigForm(forms.ModelForm):
    def __init__(self,idprov,*args,**kwargs):
        super(ConfigForm,self).__init__(*args,**kwargs)
        self.id_provider = idprov

    class Meta:
        model = Config

和我的views.py:

@csrf_exempt
def configView(request):
    prov = get_object_or_404(Config, id_proveedor=id)
    if request.method == 'POST':
       form = ConfigForm(request.post, instance=prov)
       if form.is_valid():
          form.save()
          return HttpResponseRedirect('/monitor/')
    else:
       form = ConfigForm(Config.id_proveedor,instance=prov)
    return render_to_response('config.html',{'form':form},RequestContext(request))

这是我尝试显示数据的表单(form2):

{% block content %}
<div class="container">
<div class="row">
<div class="col-md-4">
<form method='POST' action='' class='form'>
   <div class="form-group">
        {% csrf_token %}
        {{ form.as_p }}
   </div>
        <button type='submit' class="btn btn-primary">Grabar</button>
</form>
</div>
</div>
</div>
{% endblock %}

我收到错误:

/ config /

的TypeError

id()只需要一个参数(0给定)

我不知道我的错误是否在我尝试更新数据(form2)的表单的方法中,或者我在表单视图中有一些错误。 我想我没有以正确的方式得到输入文本的值。

任何建议,链接或代码段都会非常有用

提前致谢

1 个答案:

答案 0 :(得分:0)

id是一个Python函数,你没有创建它

>>> id('test')
35092128

尝试

@csrf_exempt
def configView(request):
    # Get your ID in another way for example this one
    pk = request.POST.get('id', None)
    if pk is None:
        # Handle error

    prov = get_object_or_404(Config, id_proveedor=pk)
    #                                             ^^

应该有效

BTW使用csrf_exempt通常不是一个好主意。