2013-10-15 68 views
0

我试图传递一些额外的上下文到Django的CreateView。我有以下网址:Django CreateView消失的形式

url(
    regex = r'^add/(?P<complainant_pk>\d+)/$', 
    view = ComplaintCreateView.as_view(), 
    name = 'register_complaint', 
), 

和观点是:

class ComplaintCreateView(PermissionRequiredMixin, CreateView): 
    model = Complaint 
    form_class = ComplaintForm 
    login_url = "/login/" 
    permission_required = "complaints.add_complaint" 

    def get_context_data(self, **kwargs): 
     # Call the base implementation to get a context 
     context = super(ComplaintCreateView, self).get_context_data(**kwargs) 
     context['complainant'] = Complainant.objects.get(
      pk=self.kwargs['complainant_pk'] 
     ) 

这导致从模板线到来的模板错误:

{% crispy form %} 

VariableDoesNotExist at /complaints/add/6/ 
Failed lookup for key [form] in... 

当我删除overrid e在get_context_data表格呈现良好,但当然我没有我的额外上下文。任何想法是什么造成这种情况?我完全被难住了,因为代码与我网站上其他地方的一些工作代码完全相同,除了模型名称。我试图覆盖get_form_class以防止定义的form_class在某种程度上被我的新get_context_data忽略,但这并没有帮助。

回答

2

我没有从我重写的方法中返回任何东西!因此,答案是用return context结束get_context_data区块。