장고 ORM 요리책¶
『장고 ORM 요리책(Django ORM Cookbook)』은 장고의 ORM(객체 관계 매핑) 기능과 모델 기능을 활용하는 다양한 레시피(조리법)를 담은 책입니다. 장고는 모델-템플릿-뷰(MTV) 프레임워크입니다. 이 책은 그 가운데 ‘모델’에 대해 상세히 다룹니다.
이 책은 “장고 ORM/쿼리셋/모델으로 ~을 하는 방법은 무엇인가요?”와 같은 질문 50여 개와 그 답을 담고 있습니다.
정보를 조회하고 필요한 항목을 선별하는 방법¶
- 1. 장고 ORM이 실행하는 실제 SQL 질의문을 확인할 수 있나요?
- 2. OR 연산으로 일부 조건을 하나라도 만족하는 항목을 구하려면 어떻게 하나요?
- 3. AND 연산으로 여러 조건을 모두 만족하는 항목을 구하려면 어떻게 하나요?
- 4. NOT 연산으로 조건을 부정하려면 어떻게 하나요?
- 5. 동일한 모델 또는 서로 다른 모델에서 구한 쿼리셋들을 합할 수 있나요?
- 6. 필요한 열만 골라 조회하려면 어떻게 하나요?
- 7. 장고에서 서브쿼리 식을 사용할 수 있나요?
- 8. 필드의 값을 서로 비교하여 항목을 선택할 수 있나요?
- 9. FileField에 파일이 들어있지 않은 행은 어떻게 구할 수 있나요?
- 10. 두 모델을 결합(JOIN)하려면 어떻게 하나요?
- 11. 두번째로 큰 항목은 어떻게 구하죠?
- 12. 특정 열의 값이 동일한 항목은 어떻게 찾나요?
- 13. 쿼리셋에서 고유한 필드 값을 가진 항목은 어떻게 구하나요?
- 14. Q 객체를 이용해 복잡한 질의를 수행하는 방법은 무엇인가요?
- 15. 기록된 항목의 집계를 구할 수 있나요?
- 16. 항목을 무작위로 뽑고 싶습니다. 효율적인 방법이 있을까요?
- 17. 장고가 지원하지 않는 데이터베이스 함수를 사용할 수 있나요?
항목을 생성·갱신·삭제하는 방법¶
조회 결과를 정렬하는 방법¶
모델을 정의하는 방법¶
- 1. 일대일 관계는 어떻게 나타내나요?
- 2. 일대다 관계는 어떻게 나타내나요?
- 3. 다대다 관계는 어떻게 나타내나요?
- 4. 모델에 자기 참조 외래 키를 정의할 수 있나요?
- 5. 기존 데이터베이스를 장고 모델로 옮길 수 있나요?
- 6. 데이터베이스 뷰에 대응하는 모델을 정의할 수 있나요?
- 7. 분류·댓글처럼 아무 모델이나 가리킬 수 있는 범용 모델을 정의할 수 있나요?
- 8. 모델에 연결된 표의 이름을 지정할 수 있나요?
- 9. 모델 필드의 데이터베이스 열 이름을 지정할 수 있나요?
- 10.
null=True
와blank=True
의 차이가 무엇인가요? - 11. 기본 키(PK)로 ID 대신 UUID를 사용할 수 있나요?
- 12. 슬러그 필드를 사용할 수 있나요?
- 13. 장고 프로젝트 하나에서 여러 개의 데이터베이스를 사용할 수 있나요?