Расширение ответа AdamKG на представления класса - переопределить метод get_form_kwargs
:
class PassRequestToFormViewMixin:
def get_form_kwargs(self):
kwargs = super(PassRequestToFormViewMixin, self).get_form_kwargs()
kwargs['request'] = self.request
return kwargs
from django.views.generic.edit import CreateView
class BookSubmitCreateView(PassRequestToFormViewMixin, CreateView):
form_class = BookSubmitForm
# same for EditView
, а затем в формах:
from django.forms import ModelForm
class BookSubmitForm(ModelForm):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop("request")
super(BookSubmitForm, self).__init__(*args, **kwargs)
...