재판매하는 리셀러라는 테이블이 있다.
리셀러는 1차 리셀러와 2차 리셀러가 있는데 1차 리셀러의 parent_id는 0로 하고 2차 리셀러는 1차 리셀러의 id값으로 한다.
2차 리셀러인 경우 1차리셀러의 리셀러명을 가져와야 하는데 이때는 SELECT SUBQUERY가 필요하다
SELECT `ReSeller`.`id`,
`ReSeller`.`parent_id`,
`ReSeller`.`sort`,
`ReSeller`.`reseller_name`,
`ReSeller`.`name`,
`ReSeller`.`contract_address`,
`ReSeller`.`email`,
`ReSeller`.`memo`,
`ReSeller`.`language`,
`ReSeller`.`created_date`,
`ReSeller`.`modified_date`,
(SELECT U0.`reseller_name` FROM `ReSeller` U0 WHERE U0.`id` = `ReSeller`.`parent_id`) AS `seller1`
FROM `ReSeller`
WHERE `ReSeller`.`language` = 'ko_KR'
ORDER BY `ReSeller`.`created_date` DESC
쿼리는 위와 같다
이것을 장고 ORM으로 표현하면 아래와 같다
reseller = ReSeller.objects.filter(language=language).order_by(sort_field)
1차 쿼리의 셀렉트 조건
reseller = reseller.annotate(
reseller1=Subquery(ReSeller.objects.filter(id=OuterRef('parent_id')).values('reseller_name')))
'development > Mr.dJango 장고뽀개기' 카테고리의 다른 글
장고 API 문서 만들기 - drf-yasg(Swagger 문서 자동화) (0) | 2021.01.19 |
---|---|
serializers 를 이용할때 에러 (0) | 2020.06.15 |
django- setting.py db접속 에러 (0) | 2020.06.03 |
Django values_list() (0) | 2020.04.24 |
wkhtmltopdf 파일 변환시 폰트 깨지는 현상 (0) | 2019.10.31 |