Django CreateView消失的形式

时间:2013-10-15 14:24:53

标签: django django-crispy-forms

我正在尝试将一些额外的上下文传递给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...

当我删除get_context_data上的覆盖时,表单呈现得很好,但当然我没有额外的上下文。是什么原因引起了这个?我完全难过,因为代码与我网站上其他地方的一些工作代码相同,除了模型名称。我尝试覆盖get_form_class,以防我的新form_class以某种方式忽略定义的get_context_data,但这没有帮助。

1 个答案:

答案 0 :(得分:2)

我没有从被覆盖的方法中返回任何内容!因此,答案是以get_context_data结束return context阻止。