Formwizard с одной моделью и inlineformset

Я разрабатываю мастер с помощью Formwizard, который соответствует одной модели. Также из-за отношений между моей моделью и другими моделями я использую inlineformset_factory, чтобы поля присутствовали в шаблоне.

Я создал 2 формы с одной и той же моделью для атрибута модели. Я только что изменил атрибут полей, чтобы различать 2 формы, которые я использую в своем мастере.

На данный момент, чтобы сохранить информацию о формах в моем мастере, я делаю это:

    def done(self, request, form_list):
    instance = Sale()
    for form in form_list:
        for field, value in form.cleaned_data.iteritems():
            setattr(instance, field, value)
    instance.save()

Это работает хорошо, но не сохраняет мои встроенные формы.

Итак, я добавил это в метод done:

    picture_formset = ProductPictureFormset(request.POST, instance=instance)
    if picture_formset.is_valid():
        picture_formset.save()

Но когда я это делаю, у меня появляется эта ошибка в Django:

Exception Type: ValidationError

Я заметил, что мои данные, содержащиеся в моих встроенных наборах форм, не передаются между шагами. Вот как я добавляю встроенный набор форм в свой мастер прямо сейчас:

def parse_params(self, request, *args, **kwargs):
    if self.step == 0:
        self.extra_context.update({
            'picture_formset': ProductPictureFormset(),
            'brand_attribute_formset': BrandAttributeFormset()
        })

Но, похоже, мне нужно найти способ передать данные, полученные в этих формах, на второй шаг.

Есть идеи, как это сделать?

Спасибо!


person e-Jah    schedule 28.05.2011    source источник


Ответы (1)


Я немного переработал свои модели, чтобы иметь возможность сохранять каждую модель на каждом этапе в process_step. Также я храню информацию в сеансе.

person e-Jah    schedule 26.07.2011