5

初めてDjango-social-authを使用していますが、すべての新しいユーザーが私のDjangoWebサイトのsocial_authアプリのユーザーモデルに登録されているようです。特定のデータ(サイトでのユーザーアクティビティおよび他のエンティティとの関係)を持つUsersという別のモデルがあり、ユーザーのFacebookプロファイル(ユーザー名、プロフィール写真など)から取得したデータをユーザーに入れたい自分で作ったモデル。social_authユーザーを拡張する方法はありますか?

編集 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

また、ユーザーのプロフィール写真や友達リストなどを取得するにはどうすればよいですか?私はこれのメカニズムを理解していません。

どうもありがとう !

4

2 に答える 2

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に感謝します:)

于 2012-05-13T19:50:18.330 に答える
2

ドキュメントから:

必要に応じて、使用されているユーザーモデルを上書きすることができます。

SOCIAL_AUTH_USER_MODEL = 'myapp.CustomUser'

ソース:github

于 2012-05-12T13:14:35.187 に答える