2011-11-22 1 views
0

사용자 정의 양식을 사용하는 인라인 _ 형식 세트가 있습니다. 그 양식에는 제가 부르려고하는 다양한 기능이 있습니다. 그러나 formset의 인스턴스가 주어지면 그 폼 (들)에 어떻게 액세스 할 수 있습니까?formset의 멤버 폼에 액세스하는 방법은 무엇입니까?

class MyModel(models.Model): 
     myField = models.ForeignKey(MyOtherModel) 

    class MyOtherModel(models.Model): 
     myField = models.CharField() 

    class MyModelForm(forms.ModelForm): 
     class Meta: 
      model = MyModel 

    class MyOtherModelForm(forms.ModelForm): 
     class Meta: 
      model = MyOtherModel 
     def foo(self): 
      print "foo" 

    MyFormSet = inlineformset_factory(MyModel,MyOtherModel,formset=MyOtherForm) 

    def MyView(request): 
     myModel = MyModel() 
     myForm = MyModelForm(instance=myModel) 
     myFormSet = MyFormSet(intance=myModel) 

     # THIS FAILS... 
     myFormSet.foo() 
     # SO DOES THIS... 
     myFormSet.forms[0].foo() 
     # SO DOES THIS... 
     myFormSet.form.foo() 
     # ANY IDEAS? 

     return render_to_response('my_view.html', {"form" : myForm, "formset" : myFormSet },context_instance=RequestContext(request))  
+0

왜 실패합니까? ppl이 실제 오류를 볼 수 있도록 스택 추적을 던져야합니다. – benjaoming

+1

문제를 올바르게 설명하는 코드를 보여주십시오. 여기서 팩토리 콜은 존재하지 않는 formset 클래스를 참조하며 실제로 폼 인자를 전달하는지 여부는 알지 못합니다. –

답변

1

당신은 formset.forms을 통해 해당 formset의 양식에 액세스 할 수 있습니다 여기에

은 일부 의사 코드입니다.

myFormSet.forms[0].foo()이 실패하면 아마도 formset에 양식이 없음을 의미합니다. 당신은 우리에게 어떤 방법으로 실패했는지 말하지 않았습니다 - IndexError?

formsetinlineformset_factory에 정의하는 경우 BaseModelFormSet에서 상속되었는지 확인 했습니까?

관련 문제