2013-07-29 2 views
0

Je dois filtrer les utilisateurs (à partir de auth.user) en fonction de leur nom complet. Je sais que je peux adresser le nom complet d'un utilisateur par user.get_full_name(), mais est-il possible de filtrer par cet attribut?Nom complet du filtre d'authentification

Je dois faire quelque chose comme, user = User.objects.filter(...), mais j'ai besoin de lui donner un attribut. Y at-il un attribut que je peux utiliser pour cela?

Répondre

0

Pas comme une propriété, malheureusement.

Les propriétés disponibles dans le modèle utilisateur Django sont

  • nom d'utilisateur
  • mot de passe
  • email
  • prénom
  • nom

Mais faire le filtre serait de toute façon ressemble à ceci

User.object.filter(first_name="Jimminy", last_name="Cricket") 

Ce que vous pouvez faire est de créer un profil personnalisé.

class UserProfile(models.Model): 
    full_name = models.CharField() 
    user = models.ForeignKey(User) 

    def save(self, *args, **kwargs): 
     self.full_name = "Jimminy Cricket" #but not hardcoded ofc. 
     super(UserProfile, self).save(*args, **kwargs) 

et filtre comme si

profile = UserProfile.objects.get(full_name="Jimminy Cricket") 
print profile.user 
+0

Oui. Je suppose que c'est le meilleur que je peux faire. Je vais séparer l'entrée (de l'utilisateur): 'name = name.split ('')', et ensuite 'user = User.objects.filter (prénom_name = nom [0], last_name = name [1])' –