保存formset时的TypeError

时间:2010-07-28 18:49:48

标签: django django-forms

我已经宣布了一个这样的formset:

class BaseFeatureFormSet(BaseFormSet):
    def save(self, commit = True):
        feature = Feature(name = self.cleaned_data['name'], 
                     type = self.cleaned_data['type'], 
                     premium = self.cleaned_data['premium'],)
        feature.save()
        return feature


FeaturesFormset = formset_factory(EditFeatureForm, 
                                  formset = BaseFeatureFormSet, extra = 0)

所以当我保存formset时,我得到一个TypeError:list indices must be integers, not str引用save()函数的第一行。我该如何解决这个错误?

更新1 由于gruszyczy,管理解决了这个问题。我没有从代码部分的下一行获得另一个TypeError:'EditFeatureFormFormSet' object is not iterable

for feature in features:
    feature.save()
    feature = vehicle.features.add(feature)

错误来自for feature in features:想法?

2 个答案:

答案 0 :(得分:2)

此示例中的

cleaned_data是表单值列表。你必须迭代它,在里面你会找到你需要的数据:

for values in self.cleaned_data:
    feature = Feature(name=values['name'], ..

这是因为formset是一个表单列表,显示并返回表单值列表。当您简单地意识到,FormSet< - >时,这是一个简单的概念。 [表格,表格,表格,......]

答案 1 :(得分:0)

features究竟在哪里定义为列表/元组?