从视图中的form_class获取表单输入值

时间:2017-06-28 07:45:42

标签: django python-2.7 django-forms django-views

如何在基于类的视图

中访问表单输入中的company_id字段

forms.py

    class CompanyProductForm(forms.Form):
        company_id = forms.IntegerField()

我尝试覆盖form_valid(),但没有成功。 我也希望转换' obj'查询到python列表,然后将其附加到产品。

view.py

    class CompanyProduct(LoginRequiredMixin, UserPassesTestMixin, FormView):
        template_name = 'company_product.html'
        form_class = CompanyProductForm
        products = []

        def test_func(self):
            return self.request.user.is_staff

        def post(self, request, *args, **kwargs):
            self.products = []

            def form_valid(self, form):
                id = form.cleaned_data['company_id']
                return super(CompanyProduct, self).form_valid(form)

            obj = Product.objects.filter(company_id=id)



            return render(request, 'product_download.html',{'product':self.products,
                                                    'num':len(self.products)})

错误:

/ upload / company_product /

中的TypeError

int()参数必须是字符串或数字,而不是' builtin_function_or_method'

1 个答案:

答案 0 :(得分:1)

通过仅使用赋值覆盖post方法,您已禁用了应该在帖子上发生的所有其他操作,例如验证表单。您应该完全删除该方法 - 在其他地方定义该列表,例如form_valid