如何提取已登录用户的用户配置文件?djang公司

2024-04-24 10:35:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Django的内置用户模型和这个UserProfile模型。你知道吗

# this is model for user profile
class UserProfile(models.Model):
    user = models.OneToOneField(User, related_name='profile')
    city = models.ForeignKey(City)
   .
   .
   .
   general attributes

如何检查登录的用户是否有关联的用户配置文件并在上下文中传递bool值?你知道吗

我需要它来决定是否显示“创建个人资料”或“编辑个人资料”在主页上。非常感谢。你知道吗


Tags: django用户模型formodelismodelsthis
2条回答

您已经设置了related_name='profile'。所以你可以:

def has_profile(user):
    try:
        return user.profile is not None
    except UserProfile.DoesNotExist:
        return False

作为检查模型是否具有相关属性的常规方法,您可以执行以下操作:

from django.core.exceptions import ObjectDoesNotExist

def has_related(obj, field_name):
    try:
        return getattr(obj, field_name) is not None
    except ObjectDoesNotExist:
        return False

如果不需要获取概要文件,那么可以使用hasattr,并避免异常处理的需要。你知道吗

user_has_profile = hasattr(user,  'profile')

在视图中,request.user是登录的用户,因此您可以这样做

user_has_profile = hasattr(request.user,  'profile')

相关问题 更多 >