Save django custom formset form

I am trying to save a set of forms in django. For this, I have my model and individual form. Then I create my form set as follows:

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

But when I do formet.save (), I get AttributeError: 'QuoteFormFormSet' object has no attribute 'save'

my model:

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

My form:

 class QuoteForm(forms.ModelForm): class Meta: model = Quote country = forms.ChoiceField(choices=COUNTRIES, required=False) street = forms.CharField(max_length=100, required=False) 
+4
source share
3 answers

Ok I had to use modelformset instead of 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, }) 
+8
source

You have not created an instance of the form.

 formset = QuoteFormset(request.POST) 
+1
source

The form does not have an attribute as a save. So, try saving the form objects in formet one by one. He will work.

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

All Articles