Django: 기본개념 정리노트

BY Jung·2021년 12월 19일
1

쿼리문

데이터베이스의 테이블이나 테이블 데이터의 내용을 생성, 수정, 삭제 시 사용하는 데이터베이스 문법.

⚡️ 장고는 ORM(object relational mapping)이라는 기능을 제공해 사용자가 쿼리문을 몰라도 파이썬으로 데이터를 다룰 수 있게 해준다

데이터베이스 사용방식의 단점

  1. 같은 목적으로 작성된 쿼리문이라 하더라도 개발자마다 다양한 쿼리문이 만들어지면 통일성이 깨진다.
  2. 개발자가 쿼리문을 잘못 작성할 시 시스템의 성능이 저하될 수 있다.
  3. 데이터 베이스 변경 시(ex: MySQL > 오라클) 특정 데이터베이스에 의존하는 쿼리문을 모두 수정해야해 유지 보수에 어려움이 생긴다

⚡️ 장고의 ORM은 1. 데이터베이스 테이블의 모델화, 2.쿼리문 자동생성을 통한 통일성 보장 및 수정 작업 불필요로 위 단점들을 보완한다

__str__ 메서드

Question이라는 모델의 데이터를 조회할 때 Question.objects.all() 이라는 함수를 사용할 수 있다.
이 때 결과로 반환되는 것은 포함된 QuarySet 객체인데, 해당 객체의 데이터 유형이 출력된다.
이는 사람이 보기 불편하므로 __str__메서드로 id가 아닌 제목을 확인할 수 있다

⚡️ 메서드는 모델의 속성을 추가하거나 변경하는 것이 아니므로 makemigrations, migrate는 수행하지 않는다.

filter와 get 함수

filter 함수는 조건에 부합하는 1개 이상의 데이터를 list 형태의 QuerySet으로 반환한다.
특정한 단 1개의 데이터만을 조회하고 싶다면 get함수를 쓰는 것이 바람직하다.

정참조와 역참조

Question 모델과 Answer 모델을 예시로 들어보자.
👉 Question을 통해 Answer을 참조할 때, 1개의 질문에 여러 개의 답변이 달릴 수 있으므로 question.answer_set으로 조회한다.(답변 세트를 조회)
👉 반대로 Answer를 통해 Question을 참조할 때, 1개의 답변은 1개의 질문에만 연결되어 있으므로 answer.question으로 조회한다.

⚡️ answer쪽은 question의 외래 키를 가지고 있으므로 question의 정보를 알고 있다. 이는 DB Modeling에서도 화살표가 Answer -> Question으로 향하므로 정참조
반대로 question쪽이 answer를 향하는 것은 역참조

profile
Slow and steady wins the race

0개의 댓글