2016-04-22 5 views
0

私のモデルには、ユーザーモデルに必要な外部キーがあります。フォームの送信時に、ログインしたユーザーを送信者として保存したいと思います。私の見解ではdjangoフォームサブミットのフィールド値としてユーザーオブジェクトを設定しました

:このような

def myview(request): 
    if request.method == 'POST': 
    form = MyForm(request.POST) 
    myuser = User.objects.get(id=request.user.id) 
    form.submitter_field = myuser 
    if form.is_valid() 
     #this prints a failed message saying submitter_field is required 

答えて

0

何かがあなたのために働くことがあります。ユーザーのクエリを実行せずに、要求セッションからユーザーIDを取得できます。

if form.is_valid(): 
    f = form.save(commit=false) 
    f.submitter_field = request.user 
    f.save() 
+0

サブミッターフィールドは必須です。フィールドを設定する前に 'is_valid()'を呼び出すことはできません。 'is_valid()'の前に 'form.save(commit = False)'を実行すると、データが検証されなかったためにthrows and error: 'を作成できませんでした。 ' – smilebomb

+0

フォームでサブミッター・フィールドが必要な場合は、フォームからサブミッター・フィールドを除去するか、または必須= Falseのサブミッター・フィールドを設定するだけです。 'form = MyForm(request.POSTまたはNone、initial = {'submitter':request.user})'を実行して、フォームの初期値を設定することもできます。 – WayBehind

関連する問題