Django,使用ModelForm更新用户资料
我正在尝试显示一个简单的用户资料表单,让用户可以更新自己的资料。问题是我的逻辑似乎有点问题,在成功保存表单后,页面上仍然显示的是旧的值。只有在刷新页面后,才会显示正确的值。这里到底出了什么问题呢?
@login_required
def user_profile(request):
success = False
user = User.objects.get(pk=request.user.id)
upform = UserProfileForm(instance=user.get_profile())
if request.method == 'POST':
userprofile = UserProfileForm(request.POST, instance=user.get_profile())
if userprofile.is_valid():
up = userprofile.save(commit=False)
up.user = request.user
up.save()
success = True
return render_to_response('profile/index.html',
locals(), context_instance=RequestContext(request))
我只是想更新一个已有的资料,而不是添加一个新的。
2 个回答
3
你也可以使用一个叫做通用视图的东西:
from django.views.generic.create_update import update_object
@login_required
def user_profile(request):
return update_object(request,
form_class=UserProfileForm,
object_id=request.user.get_profile().id,
template_name='profile/index.html')
8
试试这个:
@login_required
def user_profile(request):
success = False
user = User.objects.get(pk=request.user.id)
if request.method == 'POST':
upform = UserProfileForm(request.POST, instance=user.get_profile())
if upform.is_valid():
up = upform.save(commit=False)
up.user = request.user
up.save()
success = True
else:
upform = UserProfileForm(instance=user.get_profile())
return render_to_response('profile/index.html',
locals(), context_instance=RequestContext(request))