Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

passing a parameter to a form in FormView Django

I have a form called MyForm. I overrode the __init__() method. Now I need to pass the request.user parameter when creating this form in MyFormView.

I want to do this:

class MyFormView(FormView):
    form_class = MyForm(request.user)

Do I have to override the __init__ method of my view? If so, how?

like image 689
CHEMSEDDINE HAROUIT Avatar asked Dec 13 '22 15:12

CHEMSEDDINE HAROUIT


2 Answers

Override the view's get_form_kwargs method:

class MyFormView(FormView):
    form_class = MyForm

    def get_form_kwargs(self):
        kwargs = super(MyFormView, self).get_form_kwargs()
        kwargs['user'] = self.request.user
        return kwargs
like image 144
Alasdair Avatar answered Dec 28 '22 06:12

Alasdair


def get_form_kwargs(self):
    kwargs = super(MyFormView, self).get_form_kwargs()
    data = kwargs['data'].copy()  # convert it to a mutable
    data['user'] = self.request.user
    kwargs['data'] = data
    return kwargs
like image 36
Toha Avatar answered Dec 28 '22 08:12

Toha