2013-05-10 2 views
4

양식 마법사에 따르면 초기 데이터는 정적 사전이어야합니다. 초기 데이터를 동적으로 제공 할 수 있습니다.장고 양식 마법사에 초기 데이터를 제공하는 방법은 무엇입니까?

여기에 이메일이 내가 step0에서 초기 데이터를 원하는 것입니다 내 상황

def get_context_data(self, form, **kwargs): 
    context = super(debugRegistrationWizard, self).get_context_data(form=form, **kwargs) 
    email = InvitationKey.objects.get_key_email(self.kwargs['invitation_key']) 
    context.update({'invitation_key': self.kwargs['invitation_key']}) 
    return context 

,하지만 난 단지 get_context_data 방법이 이메일을 얻을 수 있습니다. 내가 어떻게 할 수 있니? formwizard.as_view에 대한 urlconf 같은 인수에 동의하면 방법에 의해

:

url(r'^registration/(?P<invitation_key>\w+)$', debugRegistrationWizard.as_view(FORMS)), 

복용량을 내가 내 양식의 작업에 변수를 전달해야 의미 속성, 내가 양식을 제출하면, 그렇지 않으면 나는 것 때문에 찾을 수없는 URL 오류가 발생합니다.

답변

2

first answer 거의있다. 당신은 (적어도 장고 formtools의 최신 버전) get_form_initial하지만 self.kwargs을 무시할 수 필요성을 하지 GET 또는 요청의 POST 매개 변수를 포함한다.

해결 방법은 간단합니다. self.request은 마법사의 특성 인 바로 위의 값이므로 직접 요청 값을 참조하십시오.

def get_form_initial(self, step): 
    initial = self.initial_dict.get(step, {}) 
    invitation_key = self.request.GET.get("invitiation_key") 
    email = InvitationKey.objects.get_key_email(invitation_key) 
    initial.update({'email': email}) 
    return initial 
+0

어디에서 오는 컨텍스트는 어디에서 사용 되는가? –

+0

아무 생각도 없지만 단지 그것을 고쳤습니다 :) –

관련 문제