2016-10-19 2 views
0

フォームにパラメータを渡そうとしています。この場合、object_idです。 change_viewにのみ使用されますフォームは、このコードは動作します:フォームにパラメータを渡すときのエラー

マイ形式:

class MyForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     self.my_id = kwargs.pop('my_id', None) 
     super(MyForm, self).__init__(*args, **kwargs) 

class Meta: 
    model = MyModel 
    fields = ('thing_to_show_a',) 

私の管理モデル:

class MyModelAdmin(admin.ModelAdmin): 
    def change_view(self, request, obj_id): 
     self.form = MyForm 
     return super(MyModelAdmin, self).change_view(request, obj_id) 
... 

しかし、私はとしてIDを渡すしようとした場合

class MyModelAdmin(admin.ModelAdmin): 
    def change_view(self, request, obj_id): 
     self.form = MyForm(my_id=obj_id) 
     return super(MyModelAdmin, self).change_view(request, obj_id) 
... 

の形式のパラメータ私は得る:

'MyForm' object has no attribute '__name__' 

答えて

0

self.form = MyFormでは、あなたはクラスオブジェクトをself.formに割り当てます。 self.form = MyForm(my_id=obj_id)では、MyFormクラスのオブジェクトをインスタンス化し、それをself.formに割り当てます。

Djangoはself.formでクラスを見つけようとしますが、インスタンスではありません。

関連する問題