我有一个使用请求对象的表单:
class FooForm(forms.ModelForm):
class Meta:
model = Foo
fields = ('title', )
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super().__init__(*args, **kwargs)
在我看来,每当我想实例化表单时,只需执行以下操作即可:
class FooCreateView(LoginRequiredMixin, CreateView):
model = Foo
form_class = FooForm
def get_form_kwargs(self):
kwargs = super(FooCreateView, self).get_form_kwargs()
kwargs.update({'request': self.request})
return kwargs
class FooAdmin(admin.ModelAdmin):
form = FooForm
但是轰!它死了:
KeyError at /admin/foo/foo/add/
'request'
我试着做下面的事情,但没有成功
def get_form(self, request, *args, **kwargs):
form = super(FooAdmin, self).get_form(request, *args, **kwargs)
form.request = request
kwargs['request'] = request
return form