2009-08-09 3 views
0

ich frage wieder :), ich weiß nicht, wie machen Sie das.Django validieren und zurück zur Vorschau der URL?

Mein Englisch ist nicht so gut, aber schlecht versuchen, dies zu fragen:

wie krank Prüfungs-Form und geht zurück auf die Vorschau-URL (die gleiche Ansicht Form) und zeigt die Validierungsfehler ?, im diese fragen Weil ich 2 Formulare habe, geht die erste Form in eine zweite Form (POST), aber in dieser zweiten Form (View?) muss ich das erste Formular validieren, wenn das erste Formular gültig ist, möchte ich das zweite Formular anzeigen sonst zeige ich die erste Form mit Fehlern.

ich weiß nicht, ob im klar, es tut mir leid.

im darüber nachgedacht:

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

Danke Jungs PD: im glücklich, im Codierung Django + Python: D

Antwort

3

Ja, formwizard könnte Ihre Antwort sein, aber Sie könnten es wahrscheinlich mit einer Logik in einer Ansicht tun.

Etwas wie:

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(...) 
0

Ok, Jungs, ich denke, dass mi Lösung FormWizard ist :)

aber ich bin nicht klar mit etwas über meine zweite Form, weil ich das zweite Formular auf andere Weise zeigen muss, wenn die ausgewählte Option in Radio für mehr oder weniger Felder (in der zweiten Form) ist

; (

0

Ich glaube, Sie wollen process_step() verwenden, eine gewisse Logik auf zu tun, wie/was in Ihrer zweiten Form tun Display.

Verwandte Themen