속도 관련. 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
여전히 차이가있다. 귀하의 질문에 대답, 그것은 같지 않은 것 같습니다.
참고 : 단일 문자 필드가있는 모델에는 두 개의 레코드 만 있습니다. 데이터베이스는 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