Publicações com a etiqueta "formwizard"

Pré-inicializando formulários de um FormWizard

Por semente em 22 Jan, 2009 20h40

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.