Джанго проверить и вернуться к предварительному просмотру URL? - PullRequest
0 голосов
/ 09 августа 2009

я спрашиваю снова :), я не знаю, как это сделать.

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

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

Не знаю, понятно ли, извините.

я думаю об этом:

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: я счастлив, я кодирую Django + Python: D

Ответы [ 3 ]

3 голосов
/ 10 августа 2009

Да, 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 голосов
/ 11 июня 2010

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

0 голосов
/ 09 августа 2009

Хорошо, ребята, я думаю, что это решение FormWizard:)

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

; (

...