在Django中扩展social_auth用户模型

Moh*_*rki 5 django django-socialauth

我第一次使用Django-social-auth,似乎所有新用户都已在我的Django网站的social_auth应用程序的用户模型中注册。我有一个名为“用户”的模型,它具有一些特定的数据(与网站中的用户活动以及与其他实体的关系有关),我想将从用户的Facebook个人资料(用户名,个人资料图片等)中获取的数据放入“用户”中我自己做的模特 有什么办法可以扩展social_auth用户?

编辑 在阅读Django-social-auth文档后,我如下编辑了User类:

# User model
Run Code Online (Sandbox Code Playgroud)

类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
Run Code Online (Sandbox Code Playgroud)

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

非常感谢 !

小智 4

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

这是代码:

class CustomUserManager(models.Manager):
    def create_user(self, username, email):
        return self.model._default_manager.create(username=username)
Run Code Online (Sandbox Code Playgroud)

然后我将我的用户类更改为:

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    
Run Code Online (Sandbox Code Playgroud)

在我的 settings.py 中:

SOCIAL_AUTH_USER_MODEL = 'myappname.User'
Run Code Online (Sandbox Code Playgroud)

感谢 ArgsKwargs 的帮助:)