Pré-inicializando formulários de um FormWizard
Se você precisa pré-inicializar dados de formulários num FormWizard do Django, você consegue da seguinte forma:
my_wizard = MyWizard(
[StepOneForm, StepTwoForm],
initial={
1: {field_x: data, field_y: data, ...},
2: {field_x: data, field_y: data, ...},
...
}
)
Certo? Ok, mas e se eu quiser inserir estes dados dinamicamente, de acordo com o usuário logado no site?
A forma que eu encontrei de fazer isso foi sobrescrevendo alguns métodos da classe FormWizard. Veja um exemplo:
from django.contrib.formtools.wizard import FormWizard
class MyWizard(FormWizard):
def parse_params(self, request, *args, **kwargs):
self.user_data = {
'first_name' = request.user.first_name,
'last_name' = request.user.last_name
}
def get_form(self, step, data=None):
if step == 1:
return self.form_list[1](data, prefix=self.prefix_for_step(1),
initial=self.user_data)
else:
super(MyWizard, self).get_form(step, data)
...
Não conhece o form wizard do Django? Leia mais a respeito na documentação oficial do utilitário.
Deixar um comentário