2013-04-16 40 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

表单集有没有属性为保存。因此,尝试一个接一个地保存表单对象。它会工作。

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