프로필 페이지
각 회원의 개인 프로필 페이지에 팔로우 기능을 구현하기 위해 프로필 페이지를 먼저 구현하기
User(M) - User(N)
0명 이상의 회원은 0명 이상의 회원과 관련
→ 회원은 0명 이상의 팔로워를 가질 수 있고, 0명 이상의 다른 회원들을 팔로잉 할 수 있음
.exists()
QuerySet에 결과가 포함되어 있으면 True를 반환하고 결과가 포함되어 있지 않으면 False를 반환
→ 큰 QuerySet에 있는 특정 객체 검색에 유용
Fixtures
Django가 데이터베이스로 가져오는 방법을 알고 있는 데이터 모음
→ 데이터는 데이터베이스 구조에 맞추어 작성되어 있음
초기 데이터 제공
Fixtures의 사용 목적
Fixtures 활용
사전 준비
M : N 까지 모두 작성된 Django 프로젝트에서 유저, 게시글, 댓글 등 각 데이터를 최소 2~3개 이상 생성해두기
fixtures 관련 명령어
dumpdata 생성 (데이터 추출)
loaddata 로드 (데이터 입력)
dumpdata
데이터베이스의 모든 데이터를 추출
loaddata
Fixtures 데이터를 데이터베이스로 불러오기
Fixtures 파일 기본 경로
app_name/fixtures
Django 는 설치된 모든 app의 디렉토리에서 fixtures 폴더 이후의 경로로 fixtures 파일을 찾아 load
모든 모델을 한번에 dump 하기
Fixtures 파일을 직접 만들지 말 것
반드시 dumpdata 명령어를 사용하여 생성
Improve query
query 개선하기
→ 같은 결과를 얻기 위해 DB 측에 보내는 query 개수를 점차 줄여 조회하기
annotate
SQL의 GROUP BY를 사용
select_related
SQL의 INNER JOIN을 사용
→ 1 : 1 또는 N : 1 참조 관계에서 사용
prefetch_related
M : N 또는 N : 1 역참조 관계에서 사용
→ SQL이 아닌 Python을 사용한 JOIN을 진행