Django OneToOneField 关系访问

Django OneToOneField Relationship Access

嘿,我现在有点迷失方向。我有一个简单的问题。

好吧,我得到了这个模型。

class UserProfile(models.Model)

   user = models.OneToOneField(User, related_name='profile')
   bool = models.BooleanField(default=False)

然后我想从我的 admin.py 访问这个 "bool" 字段并且在某一时刻我想测试 bool 是真还是假。

def some_method(request)

如果它在标准用户模型中有一些布尔值,我会像这样测试

if request.user.standard_bool:

但是我该怎么做才能访问我在 models.py 中定义的 bool? 我以为会是

if request.user.profile.bool:

但它给了我 "User has no profile."

P.S。 我最终发现这不是我问题的根源。 在我尝试了建议的解决方案之后它仍然没有用..直到我 更改了我的 UserProfile class 的保存和 create_user_profile 以正确保存配置文件。不过我会把它标记为已解决。

错误信息很清楚。您没有登录用户的 UserProfile 实例。

您可以使用以下代码解决这种情况:

profile = UserProfile.objects.filter(user=request.user).first()
if profile and profile.bool:
    ...

request.userdjango-auth User Model

关联
user = get_object_or_404(User, username=request.user.username)
if user.profile.bool:

记住 user.profile.bool 中的 profile 来自 related_name='profile' 在您的 UserProfile 模型下