0

ModelForm のフィールドを除外しましたが、フォームの表示には影響しないようです.as_p。何もない状態でインスタンス化したときにも表示されます!

モデルフォームは次のとおりです。

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>
4

1 に答える 1

1

これは何ですか?

else:
    w = Workout(user=thisuser)

次のようなものではないでしょうか。

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

もしそうなら、それはバグを修正しますか?

POSTリクエスト ブロックでは、次のようなインスタンスも渡す必要があります。form = WorkoutForm(request.POST, instance=w)

書き直すと、ビューは次のようになります。

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))
于 2012-05-05T07:05:08.613 に答える