2016-10-19 53 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中找到類,而不是實例。