django select 변경 정보related의join 연결 방식 (inner join/left join)

942 단어 django
django select 변경 정보related의join 연결 방식 (inner join/left join)
django는 select 를 사용할 수 있습니다related는 외부 키 대상을 미리 불러오지만,null=True가 지정되지 않은 경우,selectrelated는 inner join 연결 조회를 사용합니다. 이렇게 하면 데이터가 부족할 수 있습니다. (키 대상 데이터가 존재하지 않는 경우)
eg:
author = models.ForeignKey(Author)
queryset = Book.objects.filter(*args).select_related('author')
print(queryset.query)

>>
SELECT * FROM Book INNER JOIN Author ON ..

외부 키를 null=True로 설정하면 selectrelated는 left outer join 플러그인 조회를 사용합니다
eg:
author = models.ForeignKey(Author, null=True)
queryset = Book.objects.filter(*args).select_related('author')
print(queryset.query)

>>
SELECT * FROM Book LEFT OUT JOIN Author ON ..

만약 외키 대상이 반드시 써야 하고 null이 될 수 없으며 실제 외키 데이터가 삭제되어 일치하지 않을 경우 읽기와 쓰기는 각각 다른 모델을 사용할 수 있으며 결합 기능도 사용할 수 있다
또한 원생 sql를 실행하여leftjoin 연결eg:OrderIterm을 실행할 수 있습니다.objects.raw(sql_with_left_join)

좋은 웹페이지 즐겨찾기