객체관계매핑(Object-Relational Mapping : ORM) 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법. '가상' 객체 데이터 베이스 구축
출처 : wiki
단순하게 말해, 나는 python django에서 python 코드로 DB에 접근하여 조회, 생성, 수정, 삭제가 가능하다.
ORM에 Django models objects를 통해 반환되는 데이터베이스의 개체묶음을 말한다.
ForeignKey
(이하 FK)가 있는 모델(클래스, 테이블)에서 FK가 없는 모델을 참조할때테이블명소문자_set
으로역참조 데이터에 접근할수 있다.related_name
으로 역참조 데이터에 접근할수 있다.
select_related
는 QuerySet을 반환할때ForeignKey
,one to one
,many to one
인 모델을 함께 가져온다.(본인테이블 + 참조된 테이블(FK)를 가져온다)select_related
를 사용하면 복잡해질수 있지만 모델을 재사용할 경우 추가적인 코드를 작성하지 않아도 된다.(DB서버가 종료되기 전까지 cache에 남아있는다. 즉 DB에 접근할때 마다 비용을 아낄 수 있다)
# values() 위치에는 get(), all(), filter()등 필요한 메서드를 적용한다.
변수 = 테이블명.objects.selected_related('참조할테이블명').values(참고할테이블명소문자_id=바라보고있는테이블의컬럼명)
# 가져온 쿼리셋을 list로 바꿔담으려면?
변수 = list(테이블명.objects.selected_related('table_name').values(culumn_name_id=culumn_name))
INNER JOIN
으로 쿼리셋을 가져온다.# values() 위치에는 get(), all(), filter()등 필요한 메서드를 적용한다.
테이블명.objects.selected_related('실제참조할테이블명').values(참고할테이블명소문자_id=바라보고있는테이블의컬럼명)
select_related
로 한번에 가져올것 2번에 걸처 가저옴으로 필요한 곳에 사용하기)을 가져온다.many to one
, many to many
에 주로 사용 된다.