2013-05-10 5 views
4

в соответствии с документами мастера формы, исходными данными должен быть статический dict. но можно динамически предоставлять исходные данные.Как предоставить начальные данные мастеру формы django?

вот моя ситуация

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 

электронной почты является то, что я хочу для исходных данных в step0, но я могу только получить это письмо в get_context_data методе. Как мне это сделать?

, кстати, если URLconf для formwizard.as_view принять аргумент, как:

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

дозы это значит, что я должен передать переменную к действию моей формы атрибутам, так как в противном случае, когда я отправить форму, я буду получить не найденную ошибку URL-адреса.

ответ

2

first answer почти нет. Вам do необходимо переопределить get_form_initial, но self.kwargs (по крайней мере, в последней версии Django formtools) делает не содержит параметры запроса 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

Понятия не имею, но просто исправил это :) –

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