在Django中扩展social_auth用户模型

5
我第一次使用Django-social-auth,似乎所有新用户都被注册在我的Django网站social_auth应用程序的User模型中。我有一个名为Users的不同模型,它具有一些特定数据(与用户在站点上的活动和与其他实体的关系相关),我想将从用户Facebook个人资料获取的数据(用户名,个人资料图片等)放入自己制作的Users模型中。是否有任何方法可以扩展social_auth Users? 编辑: 在阅读Django-social-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

此外,我如何获取用户的个人资料图片、好友列表等信息?我不理解这个机制。
非常感谢!
2个回答

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

2

来自文档:

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

SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'

来源:github


我不确定如何继续。我找不到create_user()方法。我该如何添加模型管理器和create_user方法?抱歉,这是我第一次使用Django-social-auth。 - user1115538

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接