2016-04-27 9 views
1

最初のdjangoフォームセットを作成しようとしています。私はthis exampleをフォローしていますが、1つのモデル(他のフォームは標準で、モデルは添付されていません)だけでフォームセットを作成することはできません。モデルフォームのないDjangoフォームセット

forms.py(関連部分)

class ArrivalForm(forms.ModelForm): 
    class Meta: 
     model = Reservation 
     fields = ['passenger_name', 'passenger_lastname', 'passenger_email', 'author_chain' ] 

    helper = FormHelper() 
    helper.form_tag = False 
    helper.label_class = 'col-lg-3' 
    helper.field_class = 'col-lg-9' 

class RouteForm(forms.Form): 
    def __init__(self, *args, **kwargs): 
     self.helper = FormHelper() 
     self.helper.form_tag = False 
     super(RouteForm, self).__init__(*args, **kwargs) 


    place = forms.CharField(max_length=255) 
    time = forms.TimeField() 

RouteInlineFormset = inlineformset_factory(ArrivalForm, form=RouteForm, extra=2, can_delete=True) 

エラー

TypeError at /reservations/create/arrival 
inlineformset_factory() takes at least 2 arguments (4 given) 

質問

non-modelフォーム用の新しいフォームセットを作成するにはどうすればよいですか。 documentationでは、私はModelFormのためにこれを行う方法しか見つけることができませんでした。

答えて

2

formset_factoryは、モデルなしでフォームセットを作成する必要があるモデルです。詳細hereを読むことができます。ここに例があります。

from django.forms import formset_factory 
from django.shortcuts import render 
from myapp.forms import ArticleForm, BookForm 

def manage_articles(request): 
    ArticleFormSet = formset_factory(ArticleForm) 
    BookFormSet = formset_factory(BookForm) 
    if request.method == 'POST': 
     article_formset = ArticleFormSet(request.POST, request.FILES, prefix='articles') 
     book_formset = BookFormSet(request.POST, request.FILES, prefix='books') 
     if article_formset.is_valid() and book_formset.is_valid(): 
      # do something with the cleaned_data on the formsets. 
      pass 
    else: 
     article_formset = ArticleFormSet(prefix='articles') 
     book_formset = BookFormSet(prefix='books') 
    return render(request, 'manage_articles.html', { 
     'article_formset': article_formset, 
     'book_formset': book_formset, 
    }) 
関連する問題