2009-03-10 6 views
1

は、次のように私がモデルを持っている私の機能は、フォームを表示し、更新するには、このようになります。Djangoの更新のModelForm

def show_privacy(request): 
    if not request.user.is_authenticated(): 
     return HttpResponseRedirect('/') 

    if request.method == 'POST': 
     form = PrivacyForm(request.POST, instance=User.objects.get(pk=request.session['id'])) 
     if form.is_valid(): 
      form.save() 

    else: 
     form = PrivacyForm() 

    return render_to_response('settings_privacy.html', {'form': form}, context_instance=RequestContext(request)) 

dbの私のuser_idは1です。しかし、私がフォームを投稿すると、決して更新されません。私はform.save()がそこにプリントを置くことによって呼び出され、devサーバに表示されることを知っています。

+1

私は、フォーム上のビットさびたかもしれないが、なぜあなたはUserPrivacyフォームにユーザーオブジェクトを渡していますか?あなたは通常、UserPrivacyインスタンスを渡しませんか? –

+0

ログインしているユーザーに基づいてアイテムを更新したい。 – Mike

+0

しかし、UserモデルのフィールドはUserPrivacyモデルのフィールドにどのようにマップされますか? UserPrivacyフォームのユーザーフィールドを設定しようとしていますか? –

答えて

8

アンディ・ヒュームはあなたの質問に対するコメントで正しいです。

UserPrivacyモデルに基づくModelFormがありますが、Userというインスタンスを渡しています。

何がやりたいことはこれです:

form = PrivacyForm(request.POST, instance=UserPrivacy.objects.get(user=request.user) 
関連する問題