2011-10-28 3 views
2

Je voudrais simplement faire ce qui suit sans soulever une exception si l'élément n'existe pas:Raccourci pour obtenir un seul objet sans déclencher une exception?

User.objects.get(email_address = email_address) 

Y at-il un raccourci pour cela dans Django? Je veux juste vérifier si un utilisateur existe avec une adresse email donnée.

+1

Si vous voulez réellement récupérer un seul élément qui peut exister ou non, essayez ce modèle ['get_or_none()'] (http://stackoverflow.com/questions/1512059/django-get-an-object- forme-le-db-ou-none-if-nothing-matches). – jathanism

+0

essayez [django_annoying] (https://bitbucket.org/offline/django-annoying/wiki/Home), supporte get_object_or_None et quelques autres fonctionnalités amusantes ... – jawache

+0

@jawache Merci, cela semble être une bibliothèque impressionnante. Ils devraient certainement inclure des raccourcis dans la prochaine version de Django, en particulier 'get_object_or_None'. –

Répondre

3

Vous pouvez utiliser la méthode de jeu de queues exists().

De l'django docs:

existe()
Renvoie True si le QuerySet contient aucun résultat, et False sinon.

Dans votre cas:

User.objects.filter(email_address=email_address).exists() 

S'il y avait plus d'un utilisateur avec cette adresse e-mail, exists serait encore revenir True, alors que le get() soulèverait une exception User.MultipleObjectsTeturned.

Questions connexes