Django在用户注册时保存滥用者配置文件对象

时间:2012-11-05 19:26:29

标签: django django-models django-authentication django-registration

您好我有一个自定义UserProfile模型,我将用它来存储特定于我的应用的用户数据:

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    ...

    def __unicode__(self):
        return self.user.username

我正在使用django-registration来阻止和登录用户。

我的问题是 - 保存UserProfile时自动保存auth.User对象的最佳方法是什么?我可以假设UserProfile模型上的所有自定义字段都可以保存为空并稍后更新。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

Django Signals可能是个不错的选择。因此,每当保存用户对象时,它将创建用户配置文件

class UserProfile(models.Model):
    user = models.OneToOneField(User)

def _create_user_profile(sender, instance, created, **kwargs):
    UserProfile.objects.create(user=instance)

post_save.connect(_create_user_profile, sender=User)

答案 1 :(得分:0)

要创建用户配置文件(如果它尚不存在):将其放入配置文件的模型文件中:

User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])

并使用例如<{1}}当您想要访问它时。