본문 바로가기

Django4

[Django] select_related(), prefetch_related()란?(N+1문제 해결법) 1. 개요본 포스팅에서는 N+1문제가 무엇인지에 대해 알아보겠습니다. 이후 select_related와 prefetch_related메서드란 무엇인지 다루고, 이를 활용하여 N+1문제를 해결하는 방법에 대해 알아보겠습니다. 지난번 포스팅에서는 annotate메서드에 대해서 다루었습니다. 해당 메서드를 공부는 과정에서  select_ralated와 prefetch_related메서드를 접하게 되었습니다. 따라서, 이번 포스팅을 작성하게 되었습니다. annotate에 대한 추가적인 정보는 아래 링크를 통하시면 됩니다.[Django] annotate()란? - annotate 사용법(with. only(),values() 쿼리 최적화) 2. N+1 문제란?select_related와 prefetch_relat.. 2024. 9. 19.
[Django] annotate()란? - annotate 사용법(with. only(),values() 쿼리 최적화) 1. 개요지난주에 Django를 활용한 블로그 만들기 프로젝트를 진행하였습니다. 다른 분들의 코드가 궁금하여, GitHub에 있는 코드를 리뷰했습니다. 사용해 본 적 없었던 annotate() 메서드를 사용한 코드가 있었습니다. 이 메서드는 카테고리와 태그별로 작성된 포스트의 숫자를 쿼리셋에 추가하기 위해 사용되었습니다. 처음 본 annotate() 메서드를 공부해 보았고, Django의 ORM에 있어서 몰라서는 안 되는 유용한 기능이란 사실을 알게 되었습니다. 본 포스팅에서는 annotate()가 무엇인지 알아보고, 프로젝트에서 어떻게 사용되었는지 살펴보겠습니다. 이후 쿼리 최적화에 대한 내용을 다루고 포스팅을 마치겠습니다.2. annotate()란?영어 사전에서 annotate를 검색하면, 주석을 달.. 2024. 9. 13.
[Django] F객체, Q객체란? - ORM에서 F,Q 사용하기(짤막팁 2편) 1. 개요이번 포스팅은 Django의 ORM에서 사용되는 F객체와 Q객체에 대해 알아보겠습니다.2. F객체2.1 F객체란?DB 레벨에서 데이터를 직접 연산하거나 참조할 수 있도록 도와주는 객체입니다. 이를 사용하면 데이터를 메모리로 쿼리셋 형태로 불러오지 않습니다. 연산은 DB에서 직접 수행하기 때문에 효율적입니다. 주로 다음과 같은 세 가지 목적을 위해 사용합니다.필드 간의 값 비교필드 값을 이용한 계산필드 값의 업데이트2.2 F객체 사용법예시로 사용할 Product 모델의 코드와 테이블 구조입니다.from django.db import modelsclass Product(models.Model): name = models.CharField(max_length=255) # 상품 이름 sto.. 2024. 9. 8.
[Django] Signals 사용법 - 프로필 자동 생성, 좋아요 숫자 갱신(signal 표로 정리) 1. 개요지난주에 Django를 활용한 웹 블로그 만들기 프로젝트를 진행하였습니다. 계정 생성 시 자동으로 프로필이 생성되고, 좋아요 숫자가 자동으로 갱신되는 기능을 구현하기 위해 Django의 signals라는 기능을 사용했습니다. 이 기능을 활용하기는 했지만, signals에 대해 충분히 이해하지 못하였기에, 정리할 겸 포스팅을 남기기로 하였습니다. 본 포스팅에서는 signals가 무엇인지 알아보고, 프로젝트에서 사용된 실제 코드를 보며 사용 예시를 살펴보겠습니다. 또한 장단점을 파악해보며 포스팅을 마치겠습니다.2. Signals란?영어 단어 뜻 그대로 신호입니다. Django에는 "signal dispatcher"라는 기능이 포함되어있습니다. 이 기능은 특정 발신자(sender)에서 지정한 동작이 .. 2024. 9. 5.