在Django中扩展social_auth用户模型

时间:2012-05-12 13:07:58

标签: django django-socialauth

我第一次使用Django-social-auth,似乎所有新用户都在我的Django网站的social_auth应用程序的用户模型中注册。我有一个名为Users的不同模型,它有一些特定的数据(与网站中的用户活动和与其他实体的关系有关),我想把用户的Facebook个人资料(用户名,个人资料图片等)中提取的数据放入用户我自己做的模特。有没有办法扩展social_auth用户?

修改 阅读Django-social-auth文档后,我编辑了我的User类,如下所示:

# User model

class User(models.Model):

username = models.CharField(max_length=30)
last_login = models.DateTimeField(blank=True)
is_active = models.BooleanField(default=False)
playedHours = models.FloatField(default = 0)


userSlug = models.SlugField(unique = True)    

playedSongs = models.ManyToManyField(Song, blank=True, null = True)
invitedFriends = models.ManyToManyField('self', blank = True, null = True)

def __unicode__(self):
    return self.name

另外,如何获取用户的个人资料图片,朋友列表等? 我不明白这个机制。

非常感谢!

2 个答案:

答案 0 :(得分:4)

我根据需要创建了一个自定义Manager类,并将其命名为CustomUserManager

以下是代码:

class CustomUserManager(models.Manager):
    def create_user(self, username, email):
        return self.model._default_manager.create(username=username)

然后我将我的User类改为:

class User(models.Model):
    username = models.CharField(max_length=30)
    last_login = models.DateTimeField(blank=True, null=True)
    is_active = models.BooleanField(default=False)
    playedHours = models.FloatField(default = 0)

    objects = CustomUserManager()

    playedSongs = models.ManyToManyField(Song, blank=True, null = True)
    invitedFriends = models.ManyToManyField('self', blank = True, null = True)

def __unicode__(self):
    return self.username

def is_authenticated(self):
    return True    

在我的settings.py中:

SOCIAL_AUTH_USER_MODEL = 'myappname.User'

感谢ArgsKwargs的帮助:)

答案 1 :(得分:2)

来自文档:

  

如果需要,可以覆盖使用的用户模型:

     

SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'

来源:github