从用户的扩展模型中获取单个字符串属性



我想我的问题很简单,但是我是新来的,我想不出来。

我有一个用户默认的Django模型和我的扩展用户模型,在我的视图。py我只是想得到我的登录用户的地址像一个单一的字符串,我一直在尝试不同的方式使用(UserProfile.objects。值/过滤器/获取等),但我只是得到错误。

感谢您的宝贵时间!Models.py

class UserProfile(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
profile_pic = models.ImageField(null=True, blank=True, upload_to="profile_imgs")
address = models.CharField(null=True, blank=True, max_length=150)
curp = models.CharField(null=True, blank=True, max_length=18)

Views.py

@login_required(login_url='log')
def test(request):
address = "answer"
context = {
'address': address,
}
return render(request, "test.html", context)

您可以从请求用户的实例中获取地址,但是您需要在UserProfile模型的用户字段中添加一个related_name

见下文:

user = models.OneToOneField(User, null=True, on_delete=models.CASCADE, related_name='user_profile')

之后在视图函数中获取请求用户的地址,如下所示:

@login_required(login_url='log')
def test(request):
context = {
'address': request.user.user_profile.address,
}
return render(request, "test.html", context)

最新更新