7

と呼ばないCBV法form_valid() 。興味深いことに、forms.pyのcleanメソッドが呼び出されます。ジャンゴ:私は次のように<code>form_valid()</code>関数をオーバーライドしています私の<code>CreateView</code>クラスで

エラーは表示されません(したがって、表示するトレースバックがありません)。ユーザーはフォームに再度リダイレクトされます。 この動作の理由は何ですか? 私はDjango 1.5とPython 2.7を実行しています。

+3

'form_invalid'メソッドの中でprintステートメントを試しましたが、あなたは' POST'を使っていますか? –

+1

'form_invalid'メソッドを作成すると、問題が明らかになりました。提案していただきありがとうございます。あなたが答えとしてあなたのコメントを書くなら、私はそれを受け入れて投票してうれしいです。ありがとうございました。 – neurix

+0

私は同様の問題に遭遇し、 'form_invalid'も私を助けました。私はフォームが私がテンプレートに対応していないというエラーをレンダリングしていたので、それは表示されませんでした。 @neurixと遭遇したことに似ていますか? –

答えて

2

form.instance.user = self.request.userが間違っている

このバリアントを試してください:

def form_valid(self, form): 
    self.object = form.save(commit=False) 
    if self.request.user.is_authenticated(): 
     self.object.user = self.request.user 
    # Another computing etc 
    self.object.save() 
    return super(ActionCreateView, self).form_valid(form) 

P.S.あなたは本当に変更get_initialが必要ですか?あなたのコードでは、私はこの必要性を見ません。

1

フォームが有効ではない可能性があります。 form_invalid()をオーバーライドして、それが呼び出されているかどうかを確認したり、post()をオーバーライドしたり、POST中のデータを確認したりできます。

関連する問題

 関連する問題