内联Formset对象不可迭代

时间:2011-02-18 18:30:36

标签: django iterator iteration django-forms

我的最终目标是保存给定网站的Action模型(外键)。在表单验证之后,我想要对所有单个操作的点数求和,并在保存操作之前确认它低于某个阈值(100点)。如果总数超过100,我将引发ValidationError。

我的问题是我收到以下错误消息:

“'ActionFormFormSet'对象不可迭代”

实例存在,因此问题似乎是迭代这个特定的对象。在官方文档中,有一个示例以这种精确的方式迭代一个modelformset。但是,modelformset由查询集填充,而inlineformset没有以相同的方式显式填充(可能隐式地,我不知道)。

我可以不迭代这个对象吗?我该怎么办?

由于

 ActionFormSet=inlineformset_factory(Website, Action, extra=1, can_delete=True)
 if request.method=='POST':
     action_formset=ActionFormSet(request.POST, instance=website,prefix="actions")
     if action_formset.is_valid():

        #After validating the surveys, I need to make sure total points<100
        for form in action_formset:
            pass
        action_formset.save()

2 个答案:

答案 0 :(得分:2)

您可能正在使用旧版本的django。我认为,表格集只能在1.3+中迭代。这可能有效:

for form in action_formset.forms:
    pass
action_formset.save()

答案 1 :(得分:0)

首先保存formset然后迭代对象

forms = action_formset.save( commit = False)

现在通过以下方式迭代表单:

for form in forms:
    # do something