2013-04-16 2 views
4

django에서 formset을 저장하려고합니다. 이렇게하려면 모델과 사용자 지정 양식이 있어야합니다. 는 그럼 난 내 해당 formset 이런 식으로 만들 :사용자 정의 폼의 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

좋아, 내가 대신 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을 인스턴스화하지 않았습니다.

formset = QuoteFormset(request.POST) 
+0

내 게시물에 추가하는 것을 잊었습니다. – maazza

-1

해당 formset 저장 등 어떤 속성이없는의 modelformset를 사용했다. 그래서 formset에 폼 객체를 하나씩 저장해보십시오. 효과가있을 것입니다.

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