开发者社区> 问答> 正文

如何在获取现有信息时更新用户模型?

我的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
})

展开
收起
游客6qcs5bpxssri2 2019-09-15 19:24:00 557 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    您已经使用过ProfileForm(instance=user, data=request.POST)您使用过的用户实例是错误的。

    该实例应该是UserProfile对象而不是user。

    ProfileForm(instance=UserProfile.objects.get(user=user), data=request.POST) 它应该可以解决这个问题

    2019-09-15 19:26:08
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载