我的edit_profile代码有问题。我正在使用“settings.AUTH_USER_MODEL”。当我尝试编辑个人资料时,结果发现所有填充框都是空白的。我希望现有信息在那里,以便用户更容易编辑他们的个人资料。请求帮助。
账户/ models.py
class UserProfile(models.Model): user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.DO_NOTHING) first_name = models.CharField(max_length=30,null=True,blank=True) last_name = models.CharField(max_length=30,null=True,blank=True) address_number = models.CharField(max_length=15,null=True,blank=True) road = models.CharField(max_length=30,null=True,blank=True) kwang = models.CharField(max_length=30,null=True,blank=True) ked = models.CharField(max_length=30,null=True,blank=True) province = models.CharField(max_length=30,null=True,blank=True) postal = models.IntegerField(null=True,blank=True) mobile = models.IntegerField(null=True,blank=True)
def __str__(self):
return str(self.user)
账户/ views.py
@login_required def profile(request): """Display User Profile""" user = request.user profile = get_object_or_404(UserProfile, user=user) return render(request, 'accounts/profile.html', { 'profile': profile })
在ogin_required def edit_profile(request,id): user = request.user form = ProfileForm(instance=user) if request.method == 'POST': form = ProfileForm(instance=user, data=request.POST) if form.is_valid(): form.save() messages.success(request, "Updated the Profile Successfully!") return HttpResponseRedirect(reverse('profile'))
return render(request, 'accounts/edit_profile.html', {
'form': form
})
您已经使用过ProfileForm(instance=user, data=request.POST)您使用过的用户实例是错误的。
该实例应该是UserProfile对象而不是user。
ProfileForm(instance=UserProfile.objects.get(user=user), data=request.POST) 它应该可以解决这个问题
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。