django - ModelForm 中 __init__ 中的访问请求

标签 django django-forms

如何访问 __init__ 中的请求形式?

forms.py

class MyForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(MyForm, self).__init__(*args, **kwargs)


    def clean(self):
        ... access the request object via self.request ...

View .py
myform = MyForm(request.POST, request=request)

但是如果我使用基于类的 View 怎么办 FormView ?

最佳答案

如果您需要在您的 MyForm 中访问请求您可以覆盖 FormView.get_form_kwargs方法。

def get_form_kwargs(self):
    kwargs = super().get_form_kwargs()
    kwargs.update({'request': self.request})
    return kwargs

FormView source

class FormMixin(ContextMixin):
    ...
    def get_form(self, form_class=None):
        """
        Returns an instance of the form to be used in this view.
        """
        if form_class is None:
            form_class = self.get_form_class()
        return form_class(**self.get_form_kwargs())

    def get_form_kwargs(self):
        """
        Returns the keyword arguments for instantiating the form.
        """
        kwargs = {
            'initial': self.get_initial(),
            'prefix': self.get_prefix(),
        }

        if self.request.method in ('POST', 'PUT'):
            kwargs.update({
                'data': self.request.POST,
                'files': self.request.FILES,
            })
        return kwargs
        if form_class is None:
            form_class = self.get_form_class()
        return form_class(**self.get_form_kwargs())

关于django - ModelForm 中 __init__ 中的访问请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37296102/

相关文章:

python - 如何在python中获取word文档的字数?

python - Django-filter 'icontains' 没有传递到我的 URL

python - 如何在 Django 中更新 ImageField?

django - 在保存内联表单集之前对其进行修改

python - Django 表单中的只读字段

django - 将Docker容器IP地址传递到容器

javascript - VueJs 数据不会显示

python - Django 1.6 : How to pass value from a dropdown to another template page

python - Django form.as_p DateField 不将输入类型显示为日期

django-ajax-选择应用程序 : How do I create a new object when there isn't already one in the database?