将参数传递给表单时出错

时间:2016-10-19 16:47:39

标签: python django django-forms

我试图将参数传递给表单,在这种情况下是一个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__'

1 个答案:

答案 0 :(得分:0)

self.form = MyForm中,您将一个类对象分配给self.form。 在self.form = MyForm(my_id=obj_id)中,您实例化MyForm类的对象并将其分配给self.form。

Django希望在self.form中找到一个类,而不是实例。