Python 正在编写user.get_profile()自定义函数,该函数应创建身份验证配置文件(如果没有)
我正在尝试编写自定义的Python 正在编写user.get_profile()自定义函数,该函数应创建身份验证配置文件(如果没有),python,django,Python,Django,我正在尝试编写自定义的get_profile()函数,该函数应该为通过admin或任何其他未调用post_save的方式注册的用户创建用户配置文件 我怎么开始呢 我有点困惑。您正在尝试让用户创建帐户并登录吗?然后使用django注册,这很容易,而且是开箱即用的 我想您有一个模型可以处理这样的用户配置文件: class UserProfile(models.Model): """Contains user profile fields not provided by User model"
get_profile()
函数,该函数应该为通过admin或任何其他未调用post_save
的方式注册的用户创建用户配置文件
我怎么开始呢 我有点困惑。您正在尝试让用户创建帐户并登录吗?然后使用django注册,这很容易,而且是开箱即用的 我想您有一个模型可以处理这样的用户配置文件:
class UserProfile(models.Model):
"""Contains user profile fields not provided by User model"""
user = models.OneToOneField(User)
# Defined User profile fields like picture, phone, etc
因此,添加以下行(可能在您的models.py中UserProfile
model之后):
允许通过创建用户的配置文件(即在模板中:{%user.profile.phone%}
)来访问该配置文件(如果不存在)
这就是我在我的网站上解决你描述的问题的方法
希望这能有所帮助不,公司中的一些SEO人员有时会通过管理员页面注册,但不知怎的,他们在save()过程中没有创建个人资料。我不知道为什么。。这就是为什么我想在get_profile()过程中再次检查profile是否存在,如果不存在,我将创建此..然后何时调用此行?它向用户添加一个属性
profile
,因此每次访问时都会调用它,即theuser=User.objects.get(pk=1);打印user.profile.
或在我发布答案时的模板中,只需使用它;)所以你不应该再使用get\u profile()
,这个属性取代了它是的,它在我的网站上已经运行了将近一年
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])