0

我基本上想要完成的是,当用户编辑他的个人资料时,空白字段会导致所有内容都被覆盖。

例如:

如果添加了名字并且用户想要更改它,他将不必重新填写整个表单,他必须更改的唯一字段是名字字段。当表单被提交时,其他空白字段会导致他们的模型字段为空。

这是我尝试过的:

def editUserprofile(request):
    rc = context_instance=RequestContext(request)
    u = request.user
    if request.method=='POST':
        form = UserProfileEdit(request.POST, request.FILES)
        if form.is_valid():
            u = UserProfile.objects.get(user=u)
            if 'avatar' in request.FILES :
                u.avatar = request.FILES['avatar']
            if 'first_name' in request.POST:
                u.first_name = form.cleaned_data['first_name']
            if 'last_name' in request.POST:
                u.last_name = form.cleaned_data['last_name']
            if 'email' in request.POST:
                u.email = form.cleaned_data['email']
            if 'country' in request.POST:    
                u.country = form.cleaned_data['country']
            if 'date_of_birth' in request.POST:
                u.date_of_birth = form.cleaned_data['date_of_birth']
            u.save()
            return HttpResponseRedirect(reverse('photocomp.apps.users.views.editUserprofile'))
    else:
        u = UserProfile.objects.get(user=u)
        form = UserProfileEdit()
    return render_to_response('users/editprofile.html',
                             {'form':form, 'u':u},
                             rc)

我可以在不编辑模型内容的情况下让空字段通过吗?

希望它不会让你感到困惑!

如果您想了解更多详细信息,请告诉我:) 提前谢谢!

4

1 回答 1

1

由于这是编辑表单,您应该考虑使用当前值预先填写字段。这很容易通过向构造函数提交一个instance参数(如果您使用的是 ModelForm)。这将使用正确的值预先填充这些值,并且用户可以更改他/她想要的任何值。

form = UserProfileEdit(instance=u)

Django 文档链接

于 2012-05-13T22:39:15.237 回答