【问题标题】:How to get userprofile in django 2.0如何在 django 2.0 中获取用户配置文件
【发布时间】:2018-03-06 10:05:49
【问题描述】:

我已经阅读了一些帖子,但找不到我想要的内容。

我正在尝试弄清楚如何获取用户的 UserProfile。我在创建用户配置文件时创建了一对一的字段关系。我以为我可以按原样查询 UserProfile,但我无法让它工作。

def profile_edit(request):
    user = UserProfile.objects.get(user=request.user)
    return render(request, 'medium/profile_edit.html', {'user_profile_form': form,

                                                    'current_user': user})

有什么想法吗?这是我的 models.py 和视图

models.py

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL,
                            on_delete=models.CASCADE,)
    bio = models.TextField(blank=True)
    avatar = models.ImageField(upload_to='avatars', blank=True)

views.py

def register_user(request):
registered = False

if request.method == 'POST':
    user_form = UserForm(data=request.POST)
    user_profile_form = UserProfileForm(data=request.POST)

    if user_form.is_valid() and user_profile_form.is_valid():
        new_user = user_form.save()
        new_user.set_password(new_user.password)
        new_user.save()

        new_user_profile = user_profile_form.save(commit=False)
        new_user_profile.user = new_user

        if 'avatar' in request.FILES:
            new_user_profile.avatar = request.FILES['avatar']

        new_user_profile.save()
        registered = True
    else:
        print(user_form.errors, user_profile_form.errors)
else:
    user_form = UserForm()
    user_profile_form = UserProfileForm()
return render(request, 'medium/registration.html', {
    'user_form': user_form,
    'user_profile_form': user_profile_form,
    'registered': registered
})

【问题讨论】:

  • 我不明白你的问题。这段代码到底在哪里遇到问题:什么不起作用,你得到什么错误?

标签: python django user-profile


【解决方案1】:

当然,经过 2 小时的谷歌搜索,我终于弄明白了。

我在我的模型上放了一个related_name,然后在视图中添加了这个

def profile_edit(request):
user_form = UserForm(instance=request.user)
user_profile_form = UserProfileForm(instance=request.user.profile)

return render(request, 'medium/profile_edit.html', {
    'user_profile_form': user_profile_form,
    'user_form': user_form,
})

【讨论】:

  • 如果不设置related_name,可以使用默认:request.user.userprofile
猜你喜欢
  • 2012-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多