我已经宣布了一个这样的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:
想法?
答案 0 :(得分:2)
cleaned_data
是表单值列表。你必须迭代它,在里面你会找到你需要的数据:
for values in self.cleaned_data:
feature = Feature(name=values['name'], ..
这是因为formset是一个表单列表,显示并返回表单值列表。当您简单地意识到,FormSet< - >时,这是一个简单的概念。 [表格,表格,表格,......]
答案 1 :(得分:0)
features
究竟在哪里定义为列表/元组?