【问题标题】:Extend the social_auth User model in Django在 Django 中扩展 social_auth 用户模型
【发布时间】:2012-05-12 13:07:57
【问题描述】:

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

编辑 阅读 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

另外,如何获取用户的头像、好友列表等? 我不明白这个机制。

非常感谢!

【问题讨论】:

    标签: django django-socialauth


    【解决方案1】:

    我根据需要创建了一个自定义的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 的帮助 :)

    【讨论】:

      【解决方案2】:

      来自文档:

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

      SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'

      来源:github

      【讨论】:

      • 我不确定我是否理解如何继续。我找不到 create_user() 方法。如何添加模型管理器和 create_user 方法?抱歉,这是我第一次使用 Django-social-auth
      猜你喜欢
      • 2011-07-17
      • 2016-10-12
      • 2011-02-28
      • 2013-12-06
      • 2018-01-21
      • 2018-04-24
      相关资源
      最近更新 更多