2011-11-22 46 views
0

我有一個inline_formset我正在使用自定義窗體。該表格具有我想要調用的各種功能。但是,考慮到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

他們爲什麼失敗?您需要拋出堆棧跟蹤,以便可以查看實際錯誤。 – benjaoming

+1

請顯示正確顯示問題的代碼。這裏你的工廠調用是指一個不存在的formset類,我們甚至不知道你是否真的傳遞了一個表單參數。 –

回答

1

您可以通過訪問formset.forms一個formset的形式。

如果myFormSet.forms[0].foo()失敗,那可能意味着formset沒有任何形式。你還沒有告訴我們它失敗的方式 - IndexError

如果您在inlineformset_factory中定義formset,您確定它是否繼承BaseModelFormSet