岡野です。 それぞれ、動作に違いがあるので、適切に使い分けるのが良いかと思います。 以下のように動作するので参考にしてください。
>>> users[0].id users[0] によって、LIMIT 1とOFFSETが指定されたSQLで問い合わせされます(添字が0ならLIMIT 1、添字が0より多い場合はLIMIT1でOFFSET指定) レコードが存在する場合は、Userのオブジェクトが返されます。 レコードがない場合は、IndexError例外が発生します。 >>> users.first().id users.first() によって、LIMIT 1が指定されたSQLで問い合わせされます レコードが存在する場合は、Userのオブジェクトが返されます。 レコードがない場合は、Noneが返されます。 -> Noneのid属性にアクセスしようとして、AttributeErrorが発生します。 >>> users.get().id users.get() によって、件数を指定しないSQLで問い合わせされます レコードが2件以上存在する場合は、MultipleObjectsReturned例外が発生します。 レコードがない場合は、DoesNotExist例外が発生します。 以上です。 2015年6月27日土曜日 15時51分11秒 UTC+9 Jun Tanaka: > > 皆様、 > > 田中と申します。 > > フィルターからのオブジェクトの取り方でご相談です。 > どなたか詳しい方ご教授いただけないでしょうか。 > > > よくある手法として3パターンあります。 > 私からしてみたらどれも同じ?なのですが、 > > > >>> from django.contrib.auth.models import User > >>> users = User.objects.filter(id=1) > >>> users[0].id > 1 > >>> users.first().id > 1 > >>> users.get().id > 1 > > > 統一したいので、 > これは間違いやすい、 > これがベストなどご意見いただけませんでしょうか? > 今django1.6使ってます。 > > 何卒宜しくお願い致します。 > -- -- ----------------- http://djangoproject.jp/ ----------------- You received this message because you are subscribed to the Google Groups "django-ja" group. To post to this group, send email to django-ja@googlegroups.com To unsubscribe from this group, send email to django-ja-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-ja --- このメールは Google グループのグループ「django-ja」の登録者に送られています。 このグループから退会し、グループからのメールの配信を停止するには django-ja+unsubscr...@googlegroups.com にメールを送信してください。 その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。