在FormView Django中将参数传递给表单

时间:2018-07-03 12:57:50

标签: python django django-forms django-class-based-views

我有一个名为MyForm的表格。我覆盖了__init__()方法。 现在,在request.user中创建此表单时,需要传递MyFormView参数。

我想这样做:

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

我是否必须覆盖视图的__init__方法?如果可以,怎么办?

2 个答案:

答案 0 :(得分:4)

覆盖视图的get_form_kwargs方法:

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

答案 1 :(得分:1)

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