/ / Djangoでsocial_authユーザーモデルを拡張する - django、django-socialauth

social_authユーザーモデルをDjangoで拡張する - django、django-socialauth

私は初めて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"

ソース: ギブス