2016-07-01 6 views
0

私は、必須フィールドの1つが現在サインインしているユーザーであるモデルを持っています。必要なモデルフィールドの現在のユーザーを設定する

views.py

def post(self, request): 
    bound_form = self.form_class(request.POST) 
    if bound_form.is_valid(): 
     new_position = bound_form.save() 

問題は、ユーザーがそれらをフォーム上の自己を選択した場合、これが唯一の作品ということである:私はモデルの新しいレコードを作成するときは、次ありません。現在のユーザーを自動的に設定する方法が必要であり、ユーザーフィールドをフォームに表示しないだけです。私はこれを試してみました:それはモデル上の必須フィールドであることをユーザーに欠落しているため、bound_formが有効でないため

def post(self, request): 
    bound_form = self.form_class(request.POST) 
    if bound_form.is_valid(): 
     new_position = bound_form.save(commit=False) 
     new_position.user = request.user 
     new_position.save() 

しかし、これは動作しません。フォームを保存しようとする前に、他にどこにユーザーを設定できますか?テンプレート、またはビューのgetメソッド?

+2

最初にフォームからユーザーフィールドを除外する必要があることを除いて、実行したことを正確に行う必要があります。 –

+0

私にはわからない。私は現在、ユーザーに入力したいフィールドのみを表示します(つまり、ユーザーフィールドを削除しました)。言い換えれば、...すべてがユーザーが自分自身を選択した場合は動作しますが、フィールドを削除して自分自身を選択できない場合は、上記のコードでもフォームを保存できません。 – darkpool

+2

あなたの 'form'の' class Meta: 'に' exclude =( 'user'、) 'を使うべきです – trantu

答えて

2

formclass Meta:exclude=('user',)を使用してください。 @ダニエルローズマンもそうです。

関連する問題