我基本上想要完成的是,当用户编辑他的个人资料时,空白字段会导致所有内容被覆盖。
例如:
如果添加了名字并且用户想要更改它,则他不必重新填充整个表单,他必须更改的唯一字段是名字字段。当表单被提交时,其他空白字段会导致他们的模型字段为空。
这是我试过的:
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)
我是否可以在不编辑模型内容的情况下使空字段通过?
希望它不会让你如此混淆!
如果你想要更多细节请告诉我:)提前谢谢!
答案 0 :(得分:1)
由于这是编辑表单,您应该考虑使用当前值预先填充字段。通过提交构造函数instance
参数(如果您使用的是ModelForm),这很容易。这将使用正确的值预先填充值,用户可以更改他/她想要的任何值。
form = UserProfileEdit(instance=u)