auth配置文件模块有多个配置文件的问题

时间:2012-07-25 21:32:17

标签: python django django-models django-templates

与此问题类似:Is it possible to have 2 profile models using django's AUTH_PROFILE_MODULE

但我正在尝试使用django模板标签来获得我需要的东西。

有2个档案:

class Profile1(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)
    avatar = models.ImageField(upload_to='avatars/users/', null=True, blank=True)
    ... More fields ...
class Profile2(models.Model):
    user = models.ForeignKey(User, null=True, unique=True)
    avatar = models.ImageField(upload_to='avatars/users/', null=True, blank=True)
    ... More fields ...

AUTH_PROFILE_MODULE = 'profiles.UserProfile'

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    profile1 = models.ForeignKey(Profile1, related_name="profile1")
    profile2 = models.ForeignKey(Profile2, related_name="profile2")
    # Each user can essentially have more than one profile.

那么如何在模板标记中使用get_profile()获取用户配置文件?即:如果我正在尝试检索用户的个人资料的头像...

{{ comment.user.get_profile.avatar }}

这不起作用。

1 个答案:

答案 0 :(得分:0)

如果在模型Profile1中定义了avator,那么您可以执行{{ comment.user.get_profile.profile1.avatar }}

get_profile将返回UserProfile个实例。

如果我是你,我会在各个配置文件中添加related_name,如下所示:

class Profile1(models.Model):
    user = models.ForeignKey(User, null=True, unique=True, related_name='profile_1')
    ... More fields ...
class Profile2(models.Model):
    user = models.ForeignKey(User, null=True, unique=True, related_name='profile_2')
    ... More fields ...

然后执行user.profile_1.avatar而不是通过get_profile()