5

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

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

# User 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

2 回答 2

4

我根据需要创建了一个自定义的 Manager 类,并将其命名为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 的帮助 :)

于 2012-05-13T19:50:18.330 回答
2

来自文档:

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

SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'

来源:github

于 2012-05-12T13:14:35.187 回答