Question

Je stocke des informations supplémentaires par utilisateur à l'aide de la AUTH_PROFILE_MODULE .

Nous pouvons accéder à l'utilisateur dans un modèle Django en utilisant {{request.user}} , mais comment accéder aux champs du profil puisque ce profil est uniquement accessible via une fonction utilisateur. get_profile () ?

Est-il vraiment nécessaire de passer explicitement le profil dans le modèle à chaque fois?

Était-ce utile?

La solution

Utilisez {{request.user.get_profile.wewise}} . Le langage de gabarit de Django appelle automatiquement les éléments appelables - dans ce cas, la méthode .get_profile () .

Autres conseils

Je ne sais pas pourquoi c'est différent pour moi, mais je dois utiliser {{utilisateur}} plutôt que {{request.user}}.

Oui, il est possible d’accéder au profil depuis un modèle en utilisant    request.user.get_profile

Cependant, il existe un petit avertissement : tous les utilisateurs n'auront pas de profil, ce qui était dans mon cas avec des utilisateurs admin. Alors appelant directement     {{request.user.get_profile.wewise}} du modèle provoquera une erreur dans de tels cas.

Si vous êtes certain que tous vos utilisateurs ont toujours des profils, vous pouvez les appeler en toute sécurité depuis le modèle. Sinon, appelez get_profile () depuis le bloc try-except de votre vue et transmettez-le au modèle. / p>

Si vous utilisez Django > 1.5 vous ne pouvez plus utiliser get_profile .

Si vous avez une application héritée, vous devez supprimer AUTH_PROFILE_MODULE = 'myapp.profile' de votre settings.py .

Si vous utilisez models.OneToOneField (User) dans votre classe de profil, vous pouvez simplement utiliser

.
{{ request.user.profile.whatever }}

dans votre modèle Django

Si cela peut aider quelqu'un, j'ai utilisé les éléments suivants dans mon modèle:

Nom d'utilisateur: {{user.username}}

Nom complet de l'utilisateur: {{user.get_full_name}}

Groupe d'utilisateurs: {{user.groups.all.0}}

E-mail: {{user.email}}

Session démarrée à: {{user.last_login}}

Un exemple de résultat est le suivant:

  

Utilisateur: auditor ezio

     

Groupe d'utilisateurs: auditGroup

     

Nom d'utilisateur: testUser03

     

E-mail: testuser03@auditor.com

     

Session démarrée le 16 avril 2018 à 21h38

Merci :))

Travailler!

Dans votre modèle de profil, indiquez nom_société

user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)

Ensuite, dans l'utilisation du modèle. Ici nom_entreprise est un champ de la table de profil

{{ request.user.user_profile.company_name }}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top