2009-08-09 2 views
0

Я снова спрашиваю :), я не знаю, как это сделать.Django подтвердите и вернитесь к URL предварительного просмотра?

Мой английский не слишком хорошо, но плохо попытаться просить это:

как плохо Validate формы и вернуться к предварительному просмотру URL (такой же вид, вид) и показать ошибки проверки ?, им прошу это потому что у меня есть 2 формы, действие первой формы переходит ко второй форме (POST), но в этой второй форме (view?) мне нужно проверить первую форму, если первая форма действительна, я хочу показать вторую форму else ill показывает первую форму с ошибками.

Я не знаю, если я ясно, им жаль.

им думать об этом:

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

Спасибо, ребята PD: им счастливым, IM кодирования Django + Питон: D

ответ

3

Да, Formwizard может быть вашим ответом, но вы, вероятно, могли бы сделать это с некоторой логикой в ​​представлении.

Что-то вроде:

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

Хорошо, ребята, я думаю, что решение ИН :) Мастер форм

, но я не понимаю что-то о моей второй форме, потому что мне нужно показать вторую форму по-другому, если выбранная опция в радио используется для более или менее полей (во второй форме)

; (

0

Я думаю, что вы хотите использовать process_step(), чтобы сделать некоторую логику о том, как/что делать показ в вашей второй форме.

Смежные вопросы