2013-10-15 5 views
0

Я пытаюсь передать некоторый дополнительный контекст в django CreateView. У меня есть следующий URL: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

Я ничего не возвращал из своего переопределенного метода! Следовательно, ответ должен закончить блок get_context_data с помощью return context.

Смежные вопросы