岡野様、 田中です。
的確なアドバイス大変感謝しております。 岡野様のまとめてを拝見させて頂いたことで、 わかっていなかったことがクリアーになりました。 今後id属性に注意しつつ、 users.first().idで統一して行くのが無難だと思いました。 有難うございます。 2015年6月27日土曜日 17時34分58秒 UTC+9 tokibito: > > 岡野です。 > > それぞれ、動作に違いがあるので、適切に使い分けるのが良いかと思います。 > 以下のように動作するので参考にしてください。 > > >>> 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 にアクセスしてください。