我的最终目标是保存给定网站的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()
答案 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