2017-01-31 3 views
0

모델이 있고 그 안에 여러 인스턴스가있는 양식을 만들어야합니다. 좀 더 구체적으로 말하자면 : 나는 필드 이름 옆에 대괄호가있는 정규 양식 안에 ModelForm을 렌더링해야합니다. magicworld에서 이런 식으로 뭔가 :배열로 Django formset 렌더링

class ManForm(ModelForm): 
    class Meta: 
     model = Man 
     fields = ['name', 'age'] 

class PeopleForm(forms.Form): 
    # modelless form 
    people = ??? # array of ManForm instances or something 

<form action="/people/create/"> 
    {{ form }} 
</form> 

form.html forms.py 출력

<form action="/people/create/"> 
    <input type="text" name="name[0]"/> 
    <input type="text" name="age[0]"/> 
</form> 

사실을 말하면, 나는이 문제에 대해 어떻게 접근해야할지 모릅니다. 나는 modelformset_factory을 시도했지만 모두 가지고 있습니다. <input type="text" name="form-0-name"/>

+0

왜 장고 서식 세트가 사용하는 포맷이 아닌 특정 포맷이 필요하다고 생각하는지 설명 할 수 있습니까? –

+0

각 뷰어에서'view.py'를 반복 실행하고 특정 작업을 수행해야합니다. – kabukiman

+0

예, 이것이 바로 formset입니다. 그런데 왜 그걸 쓸 수 없습니까? –

답변

1

의견에서 설명한대로 formset이 필요합니다. 함수 기반 뷰 formsets을 사용하기 위해

def create_people(request): 
    PeopleFormSet = modelformset_factory(Man, form=ManForm) 
    if request.method == 'POST': 
     formset = PeopleFormSet(request.POST) 
     if formset.is_valid(): 
      for form in formset: 
       ... do something with individual form 
    else: 
     formset = PeopleFormSet() 
    return render(request, template_name, {'formset': formset} 
+0

그 요청을 알지 못했습니다. POSTT는 그런 식으로 형식을 파싱합니다. 감사 – kabukiman

0

는 @Daniel Roseman의 답을 보거나 here을 읽었다.

클래스 기반보기에는 이에 대한 일반보기가 없습니다. this ticket에 따르면 그들은 제 3 자 패키지가이를 처리하도록 결정했습니다. 그것에 대해 django-extra-views을 사용할 수 있습니다.