Django表单 - 如何使用前缀参数 [英] Django Forms - How to Use Prefix Parameter

查看:112
本文介绍了Django表单 - 如何使用前缀参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

说我有一个表单,如:

  class GeneralForm(forms.Form):
field1 = forms。 IntegerField(required = False)
field2 =表单。 IntegerField(required = False)

我想在一个表单标签中的一个页面上显示两次时间使用不同的前缀,例如:

 其余页面
< form ..>
GeneralForm(data,prefix =form1)as_table()
GeneralForm(data,prefix =form2)。as_table()
< input type =submit/> ;
< / form>
其余的页面...

当用户提交此信息时,如何获取提交表单回到两个单独的表单进行验证,并重新显示?



这是唯一的文档,我可以找到它的啄食。

按照通常的方式处理每个表单,确保您创建具有与用于最初生成表单相同的前缀的实例。



这是一个稍微尴尬的例子,使用您给出的表单,因为我不知道确切的用例是什么:

  def some_view(request):
如果request.method =='POST':
form1 = GeneralForm(request.POST,prefix ='form1')
form2 = GeneralForm(request。 POST,prefix ='form2')
如果全部([form1.is_valid(),form2.is_valid()]):
通过#使用表单
else:
form1 = GeneralForm(prefix ='form1')
form2 = GeneralForm(prefix ='form2')
返回render_to_response('some_template .html',{
'form1':form1,
'form2':form2,
})

这是一些现实的示例代码,演示使用前缀处理表单:



http://collingrady.wordpress.com/2008/02/18/editing-多对象在django-with-newforms /


Say I have a form like:

class GeneralForm(forms.Form):
    field1 = forms.IntegerField(required=False)
    field2 = forms. IntegerField(required=False)

And I want to show it twice on a page within one form tag each time with a different prefix e.g.,:

rest of page ...
<form ..>
GeneralForm(data,prefix="form1").as_table()
GeneralForm(data,prefix="form2").as_table()
<input type="submit" />
</form>
rest of page ...

When the user submits this, how do I get the submitted form back into two separate forms to do validation, and redisplay it?

This was the only documentation I could find and it's peckish.

解决方案

You process each form as you normally would, ensuring that you create instances which have the same prefixes as those used to generate the form initially.

Here's a slightly awkward example using the form you've given, as I don't know what the exact use case is:

def some_view(request):
    if request.method == 'POST':
        form1 = GeneralForm(request.POST, prefix='form1')
        form2 = GeneralForm(request.POST, prefix='form2')
        if all([form1.is_valid(), form2.is_valid()]):
            pass # Do stuff with the forms
    else:
        form1 = GeneralForm(prefix='form1')
        form2 = GeneralForm(prefix='form2')
    return render_to_response('some_template.html', {
        'form1': form1,
        'form2': form2,
    })

Here's some real-world sample code which demonstrates processing forms using the prefix:

http://collingrady.wordpress.com/2008/02/18/editing-multiple-objects-in-django-with-newforms/

这篇关于Django表单 - 如何使用前缀参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆