2011-10-28 4 views
2

私はアイテムが存在しない場合は、単純に例外を発生させることなく、次の操作を実行したいと思います:例外を発生させずに単一のオブジェクトを取得するためのショートカット?

User.objects.get(email_address = email_address) 

はジャンゴで、このためのショートカットはありますか?私は、ユーザーが特定の電子メールアドレスを持っているかどうかをチェックしたいだけです。

+1

実際に存在する可能性のあるアイテムまたは存在しないアイテムを取得する場合は、この['get_or_none()'パターン]を試してください(http://stackoverflow.com/questions/1512059/django-get-an-object- form-the-db-or-none-if-nothing-matchesと一致しています)。 – jathanism

+0

[django_annoying](https://bitbucket.org/offline/django-annoying/wiki/Home)を試してみてください。get_object_or_Noneとその他の楽しい機能をサポートしています... – jawache

+0

@jawacheありがとうございます、それは素晴らしいライブラリのようです。 Djangoの次のリリースでは、特に 'get_object_or_None'のようなショートカットを含める必要があります。 –

答えて

3

クエリセットメソッドexists()を使用できます。 django docsから

(存在)
ない場合はクエリセットはすべての結果が含まれている場合はtrueを返し、偽。あなたのケースでは

:このメールアドレスを持つ複数のユーザーがあった場合get()User.MultipleObjectsTeturned例外を引き上げる一方

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

existsはまだ、Trueを返します。

関連する問題