как получить доступ к формам членов formset? - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть 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))    

1 Ответ

1 голос
/ 22 ноября 2011

Вы можете получить доступ к формам набора через formset.forms.

Если myFormSet.forms[0].foo() завершится неудачей, это, вероятно, означает, что форма не имеет никаких форм. Вы не сказали нам, каким образом это терпит неудачу - IndexError?

Если вы определяете formset в inlineformset_factory, убедитесь, что он наследуется от BaseModelFormSet?

...