category__name__in
보다 category_id
로 필터링하는게 더 좋다.
size__name__in
보다 size__id__in
이 좋다.
이유는 id는 기본 설정으로 인덱싱하기 때문에 속도가 빠르다
이렇게 하기 위해서는 프론트엔드에서 필터링 값을 하드코딩해서 처리하거나, 필터나 카테고리 데이터(id값)를 조회하는 API를 따로 만들어서 처리할 수 있다.
prefetch_related
는 쿼리셋 코드의 마지막 부분에 넣어줄것, 동작에 차이는 없지만 컨벤션이다
annotate
가 subquery 형태로 적용되는 경우가 있다
.distinct()
는 필요없으면 빼도 된다.
장고 실무 프로젝트 코드를 보면 보통 models class에 메서드를 많이 추가해서 활용한다.
좋은 코드란?
_access_token
같이 앞에 언더바를 한개 넣으면 내부적으로 사용하라는 의미의 변수가 된다.
앞에 언더바가 한개 붙은 변수나 함수 등은 from module import *
로 임포트되지 않는다.
이런 것들은 from module import _access_token
같이 확실하게 임포트해줘야 한다.
파이썬에서 if else를 쓰듯이 SQL에선 CASE WHEN이 있고 장고 ORM에서도 쓸 수 있다.
테스트 코드는 success, fail 까지는 만들어 주는게 좋다.