Pregunta

im pedir de nuevo :), no sé cómo hacer esto.

Mi Inglés no es muy bueno, pero los malos tratar de hacer esta:

lo mal validar un formulario y volver a la vista previa de URL (la misma forma de la visión) y mostrar los errores de validación ?, im pregunto porque tengo 2 La forma de la acción de la primera forma es ir a una segunda forma (POST) , pero en esta segunda forma (vista?) i necesidad de validar la primera forma, si el primer formulario es válido quiero mostrar la segunda forma lo demás enfermos mostrar la primera forma de errores.

No sé si soy claro, lo siento.

im pensando en esto:

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 ???

Gracias chicos PD: im feliz, codificación de Django + pitón im: D

¿Fue útil?

Solución

Sí, FormWizard podría ser su respuesta, pero probablemente podría hacerlo con un poco de lógica en una vista.

Algo así 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(...)

Otros consejos

Ok, chicos, creo que la solución es mi FormWizard:)

pero no estoy claro con algo de mi segunda forma, porque tengo que mostrar la segunda forma de manera diferente si la opción seleccionada en la radio es para los campos más o menos (en la segunda forma)

; (

Creo que desee utilizar process_step () para hacer algo de la lógica de cómo / qué hacer exhibición en su segunda forma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top