Django - LEFT Join 을 위해 ORM의 raw sql 사용

LEFT JOIN 해서 테이블을 쫙 보여주고 싶었는데 ORM 의 기본기능으로는 안되는 건가? 일단 급한대로 raw sql을 직접 집어넣는 형태로 구현을 해 놓고 보자.

 

    item_list = Parts.objects.raw(
        "SELECT devices_parts.*, devices_lineparts.quantity \
        FROM devices_parts \
        LEFT JOIN devices_lineparts \
        ON devices_parts.id=devices_lineparts.parts_id AND devices_lineparts.line_id="
        + str(line_pk)
        + " ORDER BY devices_parts.group0_id ASC, devices_parts.group1_id ASC, devices_parts.name ASC"
    )
    print(item_list.query)

 

장비 목록이 하나의 테이블로 저장되어 있고, 

해당 장비별 라인에서 사용하는 갯수를 또 다른 테이블에 저장하고 있다.

 

장비 목록에서 정방향 참조를 할 수 없고, 라인별 장비 저장 테이블에서 정방향으로 가져오려니 전체 장비 목록에 숫자만 넣는 형태가 안되고..

LEFT Join으로 많이 찾아 보는데 그냥 이걸로 쓰자.

 

Model.objects.raw("SQL문장") 이렇게 쓸 수 있으니 다행이긴 한데 쫌 찝찝

복잡한 도시 앞 가지런한 집 내머리속도 지식정리가 좀 되어야 할듯

Enric Cruz López 님의 사진, 출처: Pexels