해결된 질문
작성
·
303
·
수정됨
0
qs1: QuerySet = Post.objects.order_by('id').all()
qs2: QuerySet = Post.objects.order_by('id')
-> 수업에서 사용한 방식
에서 qs1 처럼도 해보니
아래 코드블록처럼 두개의 결과가 똑같습니다.
<class 'django.db.models.query.QuerySet'>
SELECT "instagram_post"."id", "instagram_post"."message", "instagram_post"."photo", "instagram_post"."is_public", "instagram_post"."created_at", "instagram_post"."updated_at" FROM "instagram_post" ORDER BY "instagram_post"."id" ASC
<QuerySet [<Post: 첫번째 메세지>, <Post: 두번째 메세지>, <Post: 세번째 메세지>]>
<class 'django.db.models.query.QuerySet'>
SELECT "instagram_post"."id", "instagram_post"."message", "instagram_post"."photo", "instagram_post"."is_public", "instagram_post"."created_at", "instagram_post"."updated_at" FROM "instagram_post" ORDER BY "instagram_post"."id" ASC
<QuerySet [<Post: 첫번째 메세지>, <Post: 두번째 메세지>, <Post: 세번째 메세지>]>
Q1.
둘다 내부적인 매카니즘이 똑같아서 아무거나 사용해도 되나요?
Q2.
똑같다하더라도 보통 어떤걸 많이 쓰나요 혹은 어떤걸 주로 쓰시고 그 이유는 무엇인가요?
답변 2
0
안녕하세요.
모델클래스에서는 디폴트 ModelManager로서 .objects를 지원합니다.
.objects 에서는 .all() 을 통해서 전체를 조회하는 QuerySet 객체를 반환받을 수 있습니다.
그러니 Post.objects.all() 라고 쓰면 전체 Post를 조회하는 QuerySet인거죠.
그럼 아래와 같이 QuerySet 객체를 체이닝(chaining)해서 쓰는 것이 일반적인데요.
Post.objects.all().order_by("id")
.all() 을 생략하여 Post.objects.order_by("id") 처럼 쓰는 것과 동일합니다.
그런데, .all() 을 뒤에 쓰는 코드는 저도 써보질 않았는 데, .all() 을 가장 앞에 쓰는 것이 일반적인 코드입니다.
화이팅입니다. :-)
폰트는 서울남산체입니다. :-)