1👍
If the form is valid your code works as expected. The described problem occures only in case of invalid form. You can try something like
def workout(request):
form = WorkoutInfoForm(request.POST or None)
if request.POST:
post = request.POST.copy()
request.session['_old_post'] = post
if form.is_valid():
form.save()
return redirect(reverse("workout.views.workout"))
else:
old_post = request.session.get('_old_post')
form = WorkoutInfoForm(old_post or None)
return render_to_response("workout/track_workout.html",
locals(),
context_instance=RequestContext(request))
Source:stackexchange.com