如何提取登录用户的用户配置文件? django的

时间:2016-03-18 12:06:34

标签: python django django-models

我正在使用Django内置的User模型和这个UserProfile模型。

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

如何检查登录用户是否具有关联的用户配置文件并在context_dict中传递bool值?

我需要决定是否在首页显示“创建个人资料”或“编辑个人资料”。谢谢。

2 个答案:

答案 0 :(得分:2)

如果您不需要获取配置文件,则可以使用hasattr,并避免需要进行异常处理。

user_has_profile = hasattr(user,  'profile')

在视图中,request.user是登录用户,因此您可以执行

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

答案 1 :(得分:1)

您已设置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