41 votes

Profil utilisateur Django

Lors de l'ajout de champs supplémentaires à un profil utilisateur, tels que l'emplacement, le sexe, l'employeur, etc., dois-je ajouter des colonnes supplémentaires à django.contrib.auth.models.User et les enregistrer là-bas? Ou dois-je créer une nouvelle table pour enregistrer les informations de profil utilisateur?

De plus, lorsqu'un utilisateur télécharge une photo de profil, dois-je l'enregistrer dans le même tableau? (Notez que ce n'est pas un serveur de production, je fais juste cela sur mon serveur d'exécution local pour comprendre les choses). Je vous remercie

47voto

Ezequiel Marquez Points 650

vous avez créé un modèle pour le profil utilisateur.

comme ça:

  class UserProfile(models.Model):  
     user = models.ForeignKey(User, unique=True)
     location = models.CharField(max_length=140)  
     gender = models.CharField(max_length=140)  
     employer = models.ForeignKey(Employer)
     profile_picture = models.ImageField(upload_to='thumbpath', blank=True)

    def __unicode__(self):
        return u'Profile of user: %s' % self.user.username
 

puis configurez dans settings.py

     AUTH_PROFILE_MODULE = 'accounts.UserProfile'
 

37voto

Dmitry Points 538

Conceptuellement, OneToOneField est similaire à une ForeignKey avec unique = True, mais le côté "inverse" de la relation renvoie directement un seul objet. Il s'agit de la méthode recommandée pour étendre la classe User.

 class UserProfile(models.Model):  
    user = models.OneToOneField(User)
    ...
 

15voto

vicvicvic Points 1684

Django fournit un moyen de stocker des informations supplémentaires sur les utilisateurs dans une table distincte (appelée profil utilisateur).

10voto

Nicolae Surdu Points 2045

À partir de Django 1.5, vous pouvez remplacer l'utilisateur par défaut par votre objet utilisateur personnalisé à l'aide d'une simple entrée de paramètres:

 AUTH_USER_MODEL = 'myapp.MyUser'
 

Pour un peu plus de détails, consultez cette entrée de documentation Django .

4voto

hitokiri82 Points 51

Il y a une solution que j'ai trouvée ici . Fondamentalement, vous étendez simplement le formulaire par défaut UserCreationForm mais en gardant le même nom. Cela fonctionne parfaitement avec la façon dont les documents de Django vous disent de faire UserProfiles .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X