0

我有一个使用自定义表单的 inline_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))    
4

1 回答 1

1

您可以通过 访问表单集的表单formset.forms

如果myFormSet.forms[0].foo()失败,那么这可能意味着表单集没有任何表单。你还没有告诉我们它以什么方式失败 - IndexError

如果您正在定义formsetin inlineformset_factory,您是否确保它继承自BaseModelFormSet

于 2011-11-22T18:03:17.177 回答