2012-01-24 15 views
-2

標準ポストリクエストの一部として渡されない検証目的の値を設定する必要があるdjangoフォームがあります。私のコードでDjangoフォーム、request.postとinitial

私は現在、このような何かを持っているが:

if request.method == 'POST': 
     postform = CreatePostForm(request.POST, request.FILES, initial={'post_type':post.post_type}) 

     if postform.is_valid(): 
       ..... 

値post_typeのような何かの値を持つ選択である「QUE」

私が午前問題は、これがないということです有効であるように見える。検証が行われる前に、誰でもCreatePostFormクラスにpost_type値を追加する方法に関する提案はありますか?

私はこの値をフォームに公開したくないので、投稿の一部として含めることはオプションではありません。

class CreatePostForm(forms.Form/ModelForm): 
    def __init__(self, post_type, *args, **kwargs): 
     super(CreatePostForm, self).__init__(*args, **kwargs) 
     self.post_type = post_type 

postform = CreatePostForm(post_type=post.post_type, request.POST, request.FILES) 

希望あなたを支援します。

+1

'post_type'はフォームのフィールドですか?少なくともあなたのCreatePostFormのフィールドを投稿することができれば、どんなタイプの検証が実行されているかわかります。 – mklauber

答えて

7

一つのアプローチは、それをあなたがそれをインスタンス化するときに引数として渡しフォームクラスのプロパティを作ることです。

+0

私のために働いていません... ** __ init __()**のselfパラメータを見逃しましたか? – MrROY

+0

ガー、あなたは正しいです。 __init__の最初のパラメータは自己であったはずです。 – Brandon

+0

ちょうど興味のない、なぜこれはkwargsからそれを引っ張って動作しないだろうか?それはそうではないようですが、なぜ私は好奇心です:) –

関連する問題