2012-05-05 11 views
0

私はModelFormのフィールドを除外しましたが、フォームの表示.as_pには影響していないようです。私は何もせずにインスタンス化すると、それを表示することさえできます!ここでDjangoモデルフォームは動作しません

はのModelFormです:

class WorkoutForm(ModelForm): 
    class Meta: 
     model = Workout 
     exclude = ('user',) 

と関連するビュー:

def addworkout(request, uid):  
    thisuser = get_object_or_404(User, pk=uid) 
    if request.method == 'POST': 
     form = WorkoutForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/u/'+str(uid)) 
    else: 
     w = Workout(user=thisuser) 

     #creates a form for thisuser 
     form = WorkoutForm(instance = w) 
    return render_to_response('addworkout.html', {'form':form, 'user':thisuser}, RequestContext(request)) 

と、テンプレート:

<body> 
    <p>"{{request.path}}" </p> 
    Add a new workout, {{user.name}}! 
    <form action="/u/1/addworkout" method="POST">{% csrf_token %} 
    {{ form.as_p }} 

    <input type="submit" value= "Submit" /> 
    </form> 
</body> 
+0

は、あなたのモデルを表示することができます:あなたのPOST要求ブロックで

、あなたも、あなたのビューは次のようになりますform = WorkoutForm(request.POST, instance=w)

が再書かれたような場合に合格する必要がありますか? – DrTyrsa

答えて

1

これは何ですか?もしそうなら、それはバグを修正しない

w = Workout.objects.get(user=thisuser) 

else: 
    w = Workout(user=thisuser) 

は、それが何かのようにすべきではありませんか?

def addworkout(request, uid): 
    thisuser = get_object_or_404(User, pk=uid) 
    w = get_object_or_404(Workout, user=thisuser) 
    form = WorkoutForm(instance = w) 

    if request.method == 'POST': 
     form = WorkoutForm(request.POST, instance=w) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/u/'+str(uid)) 

    return render_to_response('addworkout.html', {'form':form, 'user':thisuser}, RequestContext(request)) 
関連する問題