Ошибка типа при сохранении формы - PullRequest
2 голосов
/ 28 июля 2010

Я объявил набор форм так:

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)

Поэтому, когда я сохраняю набор форм, я получаю ошибку 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 ]

2 голосов
/ 28 июля 2010

cleaned_data в этом примере представляет собой список значений формы. Вы должны перебрать его, и внутри вы найдете нужные данные:

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

Это потому, что formset - это список форм, которые отображаются и возвращают список значений форм. Это простая концепция, когда вы понимаете, что FormSet <-> [Form, Form, Form, ..]

0 голосов
/ 28 июля 2010

Где именно features определен как список / кортеж?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...