Pergunta

im pedir novamente :), eu não sei como fazer isso.

O meu Inglês não é muito bom, mas mal tentar fazer esta:

quão doente validar um formulário e voltar para o URL de visualização (a mesma forma view) e mostrar os erros de validação ?, im perguntando isso porque eu tenho 2 a forma de, a ação do primeiro formulário está indo para uma segunda forma (POST) , mas nesta segunda forma (vista?) que eu preciso para validar a primeira forma, se a primeira forma é válida eu quero mostrar a segunda forma o mais doente mostrar o primeiro formulário com erros.

Eu não sei se im limpar, im pesaroso.

estou pensando sobre isso:

def secondForm(request):
    if request.method =='POST':
       form = FirstForm(request.POST)
       if form.is_valid():
          fields = request.POST.copy()
          # showing the second form?? with x differents fields, i have 2.
          if fields['xvalue']=='1': # this is from radio buttons
             form2 = xSecondForm()
          elif fields['xvalue']=='2':
             form2 = ySecondForm()
       else:
         # here go back with erros msgs????
         #return render_to_response('firstFormTemplate.html',{'form': form}, context_instance=RequestContext(request))
    else:
      #return something or go back ???

Obrigado rapazes PD: im feliz, im codificação Django + python: D

Foi útil?

Solução

Sim, FormWizard pode ser a sua resposta, mas você provavelmente poderia fazê-lo com alguma lógica em uma exibição.

Algo como:

def your_view(request):
    context = {}
    data = request.method == 'POST' and request.POST or None
    form = FirstForm(data=data)
    # If the first form is valid, build the second.
    if form.is_valid():
        if form.cleaned_data['xvalue'] == 1:
            form2 = xSecondForm(data=data)
        else:
            form2 = ySecondForm(data=data)
        context['form2'] = form2
    # If both forms are valid, everything is done.
    if form.is_valid() and form2.is_valid():
        # TODO: put save/processing logic here
        # Now redirect.
        return http.HttpResponseRedirect(...)
    # If we get here, either there hasn't been a post yet, the second form hasn't
    # been entered, or there was an error in either form.
    context['form'] = form
    return render_to_response(...)

Outras dicas

Ok, gente, eu acho que mi solução é FormWizard:)

mas im não limpar com alguma coisa sobre a minha Segunda forma, porque eu preciso para mostrar a segunda forma de maneira diferente se a opção selecionada no rádio é para mais ou menos campos (na segunda forma)

; (

Eu acho que você quer usar process_step () para fazer alguma lógica de como / o que fazer exposição em sua segunda forma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top