2012-05-12 155 views
4

我第一次使用Django-social-auth,并且似乎所有新用户都在我的Django网站的social_auth应用程序的用户模型中注册。我有一个叫做用户的模型,它有一些特定的数据(与站点中的用户活动以及与其他实体的关系),我想把从用户的Facebook配置文件(用户名,个人资料图片等)中提取的数据放入用户我自己制作的模型。有什么办法可以扩展social_auth用户吗?在Django中扩展social_auth用户模型

编辑 阅读Django的社会-auth的文件后,我编辑我的User类如下:

# User model 

类用户(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 

而且,我怎么能得到用户的个人资料图片,朋友列表等? 我不明白这个机制。

非常感谢!

回答

4

我创建了一个自定义的管理类作为要求,并称之为CustomUserManager

下面是代码:

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

然后我改变了我的用户类:

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的帮助: )

2

从文档:

这是可能的,如果要重写使用的用户模式:

SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'

来源:github

+0

我不知道我懂得如何亲CEED。我找不到create_user()方法。我如何添加模型管理器和create_user方法?对不起,这是我第一次使用Django-social-auth –