У меня есть форма, которая использует объект запроса:
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
Итак, есть ли способ передать запрос в форму администратора?