スピードについて:ここではDjango 1.10からfirst()
のソースコードです。 ipythonではtimeitモジュールを使用して、私が見つかりました:あなたがフィールドに
In [14]: %timeit rompepc.models.SampleModel.objects.all()[:1][0].sample_field
1000 loops, best of 3: 323 µs per loop
In [15]: %timeit rompepc.models.SampleModel.objects.first().sample_field
1000 loops, best of 3: 461 µs per loop
にアクセスしようとすると、
In [11]: %timeit rompepc.models.SampleModel.objects.all()[:1][0]
1000 loops, best of 3: 326 µs per loop
In [12]: %timeit rompepc.models.SampleModel.objects.first()
1000 loops, best of 3: 464 µs per loop
は違いがまだありますが、インデックス付きのバージョンを使用する前に、長さを検証する必要があるだろう心を持っています。あなたの質問に答えると、それは同じではないようです。
注:モデルには、1つのcharフィールドを持つレコードは2つしかありません。データベースはSQLite3です。レコード、フィールド、および別のDBエンジンで異なる動作をする可能性があります
両方の末尾に '.query'を追加して出力内容を確認することができます。 '.first()'と '.all()[0]'はまったく同じことをしません。 '[:1]'はインスタンスではなくクエリーセットを返します – Sayse
[ソースを見てください](https://github.com/django/django/blob/60e52a047e55/django/db/models/query.py) #L544) – Kos
'.query'は' first() 'と動作しません。Querysetでなければなりません。とにかく、私の男達は解決されます、ありがとう。 – RompePC