0

フォームのある Django ページがあります。通常どおりフォームを処理するビューコードがありますが、利用可能な場合はユーザーのセッションからの初期データをフォームに事前入力します。これは、ユーザーがこのフォームに戻ったときに、以前に選択したオプションが表示されるようにするためです (そうです、フォームは非常に広範囲です)。

私の見解、py:

def myView(request):   
    ...
    form = ProjectInfoForm(request.POST or None)
    if form.is_valid():
        # process form, including a redirect
        ...

    # if there is form data in the session, let's use that
    # to initaliaze our from with data
    if key in request.session:
        form = ProjectInfoForm(
            initial={
                 'model': request.session.get('model'),
                 ...
            }
        )
    return render_to_response(template_name, {
        ...
    }, RequestContext(request))

問題は、セッション データをロードすると、ページにエラー メッセージが表示されないことです。フォームは検証に失敗します。出力が得られません。ここで との競合はありinitialますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

そのスニペットから、セッション データが見つかった場合は、フォームを完全に再初期化します。POST データとエラーが含まれていた元の検証済みインスタンスは破棄されています。ifおそらく、リクエストが POST でない場合にのみ、その秒を入力したいと思うでしょう。

于 2013-01-10T21:10:24.393 に答える