Python UpdateView无法处理POST请求-表单不可调用?

Python UpdateView无法处理POST请求-表单不可调用?,python,django,django-views,django-class-based-views,Python,Django,Django Views,Django Class Based Views,根据UpdateView上的文档,这应该非常简单,表单确实显示了来自数据库的内容,但当单击submit按钮时,django会显示一条消息,说明: 'ProfileForm' object is not callable'. 为什么它需要一个可调用的表单?例如,表单与CreateView配合得很好,因此没有问题,现在不明白为什么它会抱怨 我在谷歌上研究过stackoverflow和search,确实有一些结果,但没有一个适用于我的情况,因为我看不出我在犯任何错误,尽管根据django的说法,我

根据UpdateView上的文档,这应该非常简单,表单确实显示了来自数据库的内容,但当单击submit按钮时,django会显示一条消息,说明:

'ProfileForm' object is not callable'. 
为什么它需要一个可调用的表单?例如,表单与CreateView配合得很好,因此没有问题,现在不明白为什么它会抱怨

我在谷歌上研究过stackoverflow和search,确实有一些结果,但没有一个适用于我的情况,因为我看不出我在犯任何错误,尽管根据django的说法,我显然是在犯错误

我的代码如下:

class PortfolioEditBase(UpdateView):
    post_req = False
    url_name = ''

    def form_valid(self, form):
        self.post_req = True
        return super(PortfolioEditBase, self).get_form(form)

    def get_context_data(self, **kwargs):
        context = super(PortfolioEditBase, self).get_context_data(**kwargs)
        context['post_req'] = self.post_req
        context['profile_id'] = self.kwargs['profile_id']
        return context

    def get_success_url(self):
        return reverse(self.url_name, args=self.kwargs['profile_id'])


class PortfolioEditGeneralInfo(PortfolioEditBase):
    model = Profile
    form_class = ProfileForm
    url_name = 'plan:general-info-edit'
    template_name = 'plan/portfolio/edit/general_info_edit.html'
配置文件表单具有以下代码:

class ProfileForm(ModelForm):
  class Meta:
    model = Profile
    fields = ['company', 'exchange', 'ticker',
              'investment_stage', 'investment_type']
    widgets = {
      'earnings_growth': Textarea(attrs={'cols': 1, 'rows': 2}),
    }
这是相关的URL.py代码:

url(r'^portfolio/general-info/edit/(?P<profile_id>[0-9]+)$', views.PortfolioEditGeneralInfo.as_view(), name='general-info-edit'),
url(r'^portfolio/general info/edit/(?P[0-9]+)$),views.portfolioedigeneralinfo.as_view(),name='general-info-edit'),
我认为django给我的错误信息没有任何意义。给出一条错误消息,说明实际问题是什么,怎么样。使用基于函数的视图非常简单,只需几行代码,但基于类的视图被认为是“最佳实践”。它似乎试图获取表单数据,但我不明白为什么它会有任何问题,为什么它会调用from而不是使用request.POST获取数据


有人知道这里出了什么问题吗?当它被认为是如此简单时,它是如此烦人。ived使用的其他基于类的视图几乎没有任何问题

表单中的错误是有效的方法。它应该是
form\u availd
安装的
get\u form

def form_valid(self, form):
    self.post_req = True
    return super(PortfolioEditBase, self).form_valid(form)
get\u form
方法,该方法需要form类作为参数。但您正在传递表单实例