2009-09-01 6 views
0

フォームから除外したuser_idフィールドを持つモデルフォームがあります。このフォームはmodelformsetになります。ユーザーフィールドが除外されているのは、編集可能な値ではないためです。私はその価値がいたずらなユーザーによって改ざんされる可能性のあるHTMLフォームに行くことを望んでいません。フォームセットに値を挿入

このモデルのformsetを保存しようとすると、user_idをnullにできないというエラーが表示されます。そのフォームセットをビューに保存する前に、各フォームにrequest.userを追加する必要があります。これどうやってするの?私はモデルフォームの単一のインスタンスに値を追加する方法を知っていますが、私はフォームセットでそれを行う方法を理解することはできません。

答えて

1

フォームにrequest.userを渡さない場合は、フォームのsaveメソッドで直接取得する方法はありません。

ただし、ユーザーがフォームのsaveメソッドでコンテキスト外から直接利用できるようにするには、方法があります。チェックアウト:http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser

1

あなたがフォームセット思い出してくれるの保存されていません:あなたは何の何かを必要とする

if formset.is_valid(): 
    instances = formset.save(commit=False) 
    for instance in instances: 
     instance.user_id = request.user.id 
     instance.save() 

。 BTW私はなぜユーザーオブジェクトではないユーザーIDを保存するのか分からないのですか?