0

もう一度質問します:)、これを作る方法がわかりません。

私の英語はあまり上手ではありませんが、これを聞いてみてください:

フォームを検証してプレビュー URL (同じビュー フォーム) に戻り、検証エラーを表示する方法は?この 2 番目のフォーム (ビュー?) 最初のフォームを検証する必要があります。最初のフォームが有効な場合は、2 番目のフォームを表示したいのですが、それ以外の場合は最初のフォームにエラーが表示されます。

明確かどうかわかりません、申し訳ありません。

私はこれについて考えています:

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

4

3 に答える 3

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(...)
于 2009-08-09T21:33:18.137 に答える
0

わかりました、みんな、miソリューションはFormWizardだと思います:)

しかし、ラジオで選択したオプションが多かれ少なかれフィールド用である場合(2番目のフォーム)、2番目のフォームを別の方法で表示する必要があるため、2番目のフォームについて何か明確ではありません

;(

于 2009-08-09T16:34:25.993 に答える
0

process_step() を使用して、2番目のフォームにどのように/何を表示するかについていくつかのロジックを実行したいと思います。

于 2010-06-10T20:15:56.310 に答える