/ / Étendre le modèle d'utilisateur social_auth dans Django - django, django-socialauth

Étendre le modèle d'utilisateur social_auth dans Django - django, django-socialauth

J'utilise Django-social-auth pour la première fois,et il semble que tous les nouveaux utilisateurs soient enregistrés dans le modèle de l'utilisateur de l'application social_auth de mon site Web Django. J'ai un autre modèle appelé Utilisateurs qui contient des données spécifiques entités) et je veux mettre les données extraites des profils Facebook des utilisateurs (nom d'utilisateur, photo de profil, etc.) dans le modèle Utilisateurs que j'ai créé moi-même. Est-il possible d'étendre les utilisateurs de social_auth?

MODIFIER Après avoir lu la documentation de Django-social-auth, j'ai modifié ma classe d'utilisateurs comme suit:

# User model

classe 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

Aussi, comment puis-je obtenir la photo de profil de l'utilisateur, sa liste d'amis, etc.? Je ne comprends pas le mécanisme de ceci.

Merci beaucoup !

Réponses:

4 pour la réponse № 1

J'ai créé une classe de gestionnaire personnalisée selon les besoins et je l'ai appelée CustomUserManager.

Voici le code:

class CustomUserManager(models.Manager):
def create_user(self, username, email):
return self.model._default_manager.create(username=username)

puis j'ai changé ma classe d'utilisateurs en:

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

Dans mon settings.py:

SOCIAL_AUTH_USER_MODEL = "myappname.User"

Merci ArgsKwargs pour l'aide :)


2 pour la réponse № 2

des docs:

Il est possible de remplacer le modèle utilisateur utilisé si nécessaire:

SOCIAL_AUTH_USER_MODEL = "myapp.CustomUser"

la source: github