2013-04-16 42 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()