2017-10-17 3 views
0

J'ai le code qui est comme ce qui suit pour les personnes se connectant:comment peut-on obtenir le profil d'un utilisateur dans django

if request.method == 'POST': 

username = request.POST.get('username') 
password = request.POST.get('password') 

user = authenticate(username=username, password=password) 

if user: 
    # Check it the account is active 
    if user.is_active: 

     # Log the user in. 
     login(request, user) 

J'ai étendu l'utilisateur de créer un UserProfile. Il contient d'autres informations. Ex: adresse, ville, état, etc.

Comment extraire le profil utilisateur de cette situation? Pour Java sous Eclipse, si je tapais "user", je verrais toutes les méthodes valides qui s'appliqueraient à l'objet "user".

Il ne semble pas que PyCharm ait une telle fonctionnalité. Cela dit, comment peut-on trouver les informations de profil associées à un utilisateur?

TIA

est en dessous du code du modèle Profil:

class UserProfileInfo (models.Model): 
    class Meta: 

     db_table = 'mstrauthdjprofile' 
     db_tablespace = 'PSAPUSR1001' 

    user = models.OneToOneField(User) 

    restrole = models.BigIntegerField(blank=True, null=True, default=0) 

    profilepic = models.ImageField(upload_to='profile_pics', blank=True) 

    lastpgprocno = models.BigIntegerField(blank=True, null=True, default=-1) 
    currentpgprocno = models.BigIntegerField(blank=True, null=True, default=-1) 
    nextpgprocno = models.BigIntegerField(blank=True, null=True, default=1) 

    reclocktype = models.BigIntegerField(blank=True, null=True, default=0) 
    reclockid = models.BigIntegerField(blank=True, null=True, default=0) 

    def __str__(self): 
     return self.user.username 
+0

Ajoutez votre code modèle Profil –

+0

@NeErAj KUMAR - l'ai ajouté au message. Des idées? –

+1

essayez 'user.userprofileinfo' pour obtenir l'objet de profil et le premier' user' devrait être l'instance utilisateur par défaut de django –

Répondre

1

OneToOneField s sont toujours accessibles à partir de leurs homologues.

user = authenticate(username=username, password=password) 
user.userprofileinfo 

user = User.objects.first() 
user.userprofileinfo 

user_profile_info = UserProfileInfo.objects.first() 
user_profile_info.user 

Vous pouvez utiliser un débogueur comme pdb en insérant un point d'arrêt dans votre code (je crois PyCharm devrait avoir un moyen automatisé pour gérer cela):

import pdb; pdb.set_trace() 

qui vous permettra d'interagir avec le portée actuelle. Vous pouvez voir quels sont les attributs d'un objet a avec __dict__

user.__dict__ 
{'username': 'user', 'id': 1, ...} 

Voir également un débogueur/plus puissant interactive comme IPython ou bpython, qui ont auto-complet intégré.