我第一次使用Django-social-auth,似乎所有新用户都在我的Django网站的social_auth应用程序的用户模型中注册。我有一个名为Users的不同模型,它有一些特定的数据(与网站中的用户活动和与其他实体的关系有关),我想把用户的Facebook个人资料(用户名,个人资料图片等)中提取的数据放入用户我自己做的模特。有没有办法扩展social_auth用户?
修改 阅读Django-social-auth文档后,我编辑了我的User类,如下所示:
# User model
class 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
另外,如何获取用户的个人资料图片,朋友列表等? 我不明白这个机制。
非常感谢!
答案 0 :(得分: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的帮助:)
答案 1 :(得分:2)