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.user
与 django-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 模型下
嘿,我现在有点迷失方向。我有一个简单的问题。
好吧,我得到了这个模型。
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.user
与 django-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 模型下