2013-04-16 5 views
4

Я пытаюсь сохранить набор форм в django. Для этого у меня есть моя модель и индивидуальная форма. Затем я создаю мой formset так:Сохраните набор форм пользовательских форм django

QuoteFormSet = formset_factory(QuoteForm, extra=2) 
formset = QuoteFormset(request.POST) 

Но когда я formset.save() я получаю AttributeError: 'QuoteFormFormSet' object has no attribute 'save'

моя модель:

class Quote(models.Model): 
    country = models.CharField(max_length=2,) 
    street = models.CharField(max_length=100,) 

Моя форма:

class QuoteForm(forms.ModelForm): 
    class Meta: 
     model = Quote 
    country = forms.ChoiceField(choices=COUNTRIES, required=False) 
    street = forms.CharField(max_length=100, required=False) 

ответ

8

Хорошо я должен был использовать modelformset вместо formset

from django.forms.models import modelformset_factory 

def new_quote(request): 
    QuoteFormSet = modelformset_factory(Quote, form=QuoteForm, extra=2) 
    if request.method == 'POST': 
     formset = QuoteFormSet(request.POST, request.FILES) 
     if formset.is_valid(): 
      formset.save() 
      # 
      return HttpResponseRedirect('/') 
    else: 
     formset = QuoteFormSet() 

    return render(request, 'request_quote_form.html', { 
    'formset': formset, 
    }) 
1

Вы не создали экземпляр формы.

formset = QuoteFormset(request.POST) 
+0

Я сделал это, но забыл добавить его в мое сообщение> _ < – maazza

-1

Formset не имеет атрибута, как сохранить. Итак, попробуйте сохранить объекты формы в formet один за другим. Это будет работать.

if formset.is_valid(): 
    formset = QuoteFormset(request.POST) 
    for form in formset: 
     form.save()