私は初めてDjango-social-authを使います、そして、私のDjangoウェブサイトのsocial_authアプリのUserのモデルにすべての新しいユーザーが登録されているようです。そして、私は自分の作ったユーザーモデルに、ユーザーの「Facebookのプロフィール(ユーザー名、プロフィール写真など)から取得したデータを入れたい」 social_authユーザーを拡張する方法はありますか?
EDIT Django-social-authのドキュメントを読んだ後、私はUserクラスを以下のように編集しました。
# User model
クラス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
また、ユーザーのプロフィール写真、友達リストなどを取得する方法もありますか。 私はこのメカニズムを理解していません。
どうもありがとう !
回答:
回答№1は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については2
ドキュメントから:
必要に応じて、使用されているユーザーモデルを上書きすることができます。
SOCIAL_AUTH_USER_MODEL = "myapp.CustomUser"
ソース: ギブス