2012-01-24 112 views
-2

我有一個django表單,我需要爲驗證目的設置一個值,它不會作爲標準Post請求的一部分傳入。Django表單,request.post和初始

在我的代碼我現在有這樣的事情:

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

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

值post_type是具有類似值的選擇「QUE」

我遇到的問題是,這並不似乎是有效的。有沒有人有任何建議,如何在驗證發生之前將post_type值添加到CreatePostForm類中。

請注意我不想在窗體上公開這個值,所以包含它作爲帖子的一部分不是一個選項。

+1

'post_type'是表單上的一個字段嗎?如果您至少可以發佈您的CreatePostForm的字段,這將有所幫助,因此我們知道正在運行的驗證類型。 – mklauber

回答

7

一種方法是讓它在你的手作爲參數,當你初始化它形式類的屬性:

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) 

希望有所幫助你。

+0

不適用於我...你錯過了** __ init __()**中的自身參數嗎? – MrROY

+0

Gah,你說的沒錯。 __init__中的第一個參數應該是自己的。 – Brandon

+0

出於興趣,爲什麼不把它從kwargs中拉出來呢?它似乎沒有,但我很好奇爲什麼:) –