안녕하세요. 이번 시간에는 django order_by에 대해 알아보겠습니다. foreign key와 annotate와 섞어서 써야 하는 예제는 다음에 보도록 하고요. 간단한 예제 위주로 굴려보겠습니다. 먼저 post에는 아래와 같은 데이터가 들어 있어요. 작성자 user는 User 테이블을 참조하는 foreign key입니다. 먼저, post 사전순으로 올려봅시다. 알파벳 소문자와 공백으로만 이루어져 있고, 아스키 사전순으로 정렬되게끔 세팅했다고 하겠습니다. 그러면 order_by에 "post"를 적어주면 됩니다. 저는 Post에서 "post"의 내용을 기준으로 사전순 오름차순으로 정렬할 것이기 때문입니다. asc입니다. 그러면, 4개의 포스트가 사전순으로 정렬됨을 볼 수 있어요. 반대로 내림차순은 어..
웹/장고 검색 결과
이 글에서는 prefetch_related랑 select_related의 차이를 다루지 않습니다. n+1 problem을 silk 분석 툴로 분석해 보는 것이 목표입니다. 먼저, 이런 상황을 생각해 봅시다. Post가 있습니다. 포스트 전체를 긁어오려고 합니다. 그런데, 잘 생각해 보면, 포스트 정보를 긁어오기 위해서, 작성자의 닉네임 등을 긁어올 겁니다. 그러면, Post에는 User 테이블을 참조하는 FK가 들어갈 겁니다. 대략 이런 구조입니다. post는 22k개가 있고, 유저는 3명이 있습니다. index 요청을 날려서, 이 구문들을 수행해 봅시다. 어떻게 될까요? 22k번 만큼의 쿼리가 날라가게 됩니다. N+1 problem이라고 많이 이야기를 하는데요. silk로 해당 request가 수행되었..
안녕하세요. 이번 시간에는 startswith, istartswith, endswith, iendswith에 대해서 간단하게 알아보겠습니다. 먼저 Post에 있는 데이터는 이러합니다. 문자열이 무엇으로 시작하는지는 startswith 조건을 걸어서 구현할 수 있어요. 예를 들어서, post가 "hi"로 시작하는 것은 어떻게 뽑아내야 할까요? post__startswith="hi"라고 쓴 것을 주목하시면 됩니다. 이것은 "hi"로 시작하는 post를 뽑는 구문입니다. 결과를 보겠습니다. 정확하게, "hi"로 시작하는 포스트가 나왔습니다. 앞에 i를 붙여서 istartswith 조건을 달면, 대소문자 구분 없이 검사해 주는데요. 예를 들어, istartswith="Hi"는 "hi"도 "hI"도 매치가 됩니다..
안녕하세요. 이번 시간에는 django에서 string 조건 검사를 할 때 쓸 수 잇는 contains, icontains, exact, iexact에 대해 간단하게 알아봅시다. 제대로 이해하시려면 collation에 대한 지식도 필요하고, 이 문서를 볼 필요도 있긴 합니다만, 추후에 조금 딥하게 다뤄보도록 하겠습니다. 먼저, 데이터는 이렇게 3개가 있습니다. "hi my name is cho", "nice to mEet you", "nice to meet you" 이렇게 세 개의 포스트가 있습니다. 먼저, icontains는 대소문자 구분 없이 문자열에 "meet"가 들어가는 것을 뽑아줍니다. "m"이나 "M" 등은 아스키 범위 내에 들어가기 때문에, "mEet"가 걸리던, "meet"가 걸리던 mat..
장고에서, 조건을 만족하는 오브젝트가 있으면 해당 오브젝트를 리턴하고, 없으면 404 처리를 하고 싶습니다. 이 때 저는 보통 어떻게 했냐면, exist 하지 않으면 404 response를 날리고, 아니면, 오브젝트르 가져와서 리턴했습니다. 그런데, 이를 좀 더 간단하게 처리해 줄 수 있는 함수가 있는데요. get_object_or_404입니다. 먼저 post 모델은 위와 같습니다. 작성자인 user는 User를 참조하는 Foreign key를 들고 있습니다. 이 User는 장고에서 기본으로 제공되는 Auth의 User를 의미합니다. 다음에 post는 포스트 내용을 의미해요. 뭔가 네이밍이 이상한 것 같지만 넘어갑시다. Post 관련 admin View에서, 포스트를 쓴 유저 이름을 얻어오게 바꾸었습니..
최근댓글