将formset作为参数传递给Django中的函数

将formset作为参数传递给Django中的函数,django,django-forms,django-views,Django,Django Forms,Django Views,我想将一个表单集作为参数传递给函数,并想验证表单集。如果问题不正确,请有人纠正问题 这是我的职责: def valid_check(*args): valid = True for arg in args: if not arg.is_valid(): valid = False return valid valid = valid_check(form1,formset1,formset2) if valid:

我想将一个表单集作为参数传递给函数,并想验证表单集。如果问题不正确,请有人纠正问题

这是我的职责:

def valid_check(*args):
    valid = True
    for arg in args:
        if not arg.is_valid():
            valid = False
    return valid 

valid = valid_check(form1,formset1,formset2)
    if valid:
        #do something
if all([form.is_valid(), formset1.is_valid(), formset2.is_valid()]):
但这不起作用并显示此错误:

[u'ManagementForm data is missing or has been tampered with']

似乎您忘记了在html模板中输出或将添加到表单集:

formset1 = FormSet1(prefix='formset1')
formset2 = FormSet2(prefix='formset2')
然后在模板中:

{{ formset1.management_form }}
{{ formset2.management_form }}
更新:对于评论中提出的问题:

切勿使用
if form.is\u valid()和formset1.is\u valid:
语句。如果
表单
无效,则将不会运行
表单集
验证。因此,您的
valid\u check()
函数是更正确的解决方案-它检查所有传递的表单/表单集

但我更喜欢使用python的内置函数:

def valid_check(*args):
    valid = True
    for arg in args:
        if not arg.is_valid():
            valid = False
    return valid 

valid = valid_check(form1,formset1,formset2)
    if valid:
        #do something
if all([form.is_valid(), formset1.is_valid(), formset2.is_valid()]):

在这种情况下,
is\u valid()
是为列表结构中的每个表单/表单集调用的,并且
all()
仅当所有表单都有效时才返回
True

让我问一个问题。。哪种方法好。。编写函数(上面的示例函数)来验证4个表单集或使用if form.is\u valid()and formset1.is_valid and formset.is_valid():非常感谢您宝贵的回答和宝贵的时间。:-)