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

Posted

技术标签:

【中文标题】将参数传递给FormView Django中的表单【英文标题】:passing a parameter to a form in FormView Django 【发布时间】:2018-12-11 19:22:53 【问题描述】:

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

我想这样做:

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

我是否必须覆盖视图的__init__ 方法?如果有,怎么做?

【问题讨论】:

查看get_form_kwargs 【参考方案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

【讨论】:

请添加几句话来解释您的代码在做什么,以便您的回答获得更多的支持。【参考方案2】:

覆盖视图的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

【讨论】:

太快了,我无法在 10 分钟之前接受您的回答 xD,谢谢先生!

以上是关于将参数传递给FormView Django中的表单的主要内容,如果未能解决你的问题,请参考以下文章

将参数传递给 django 表单

如何将额外的参数传递给 django admin 自定义表单?

如何将用户对象传递给 Django 中的表单

Django 将自定义表单参数传递给 ModelFormset

如何将表单视图作为 django 中的上下文传递给另一个视图?

django 将参数传递给模板标签中的函数