장고의 ORM 사용법
ORM이란?
ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어로 관계형 데이터베이스를 다룰 수 있는 기술입니다. 장고의 ORM은 데이터베이스와 상호작용하는 데 사용되는 시스템으로, SQL 쿼리 없이 데이터베이스의 데이터를 다룰 수 있게 해줍니다. 장고 모델을 정의하고, 이를 바탕으로 데이터베이스에서 데이터를 조회, 삽입, 수정, 삭제하는 작업을 객체처럼 할 수 있습니다. 이를 통해 개발자는 더 직관적이고 코드가 간결한 방식으로 데이터베이스와 상호작용할 수 있습니다.
모델을 통한 데이터베이스 테이블 관리
장고 ORM에서 데이터는 모델을 통해 관리됩니다. 모델은 데이터베이스의 테이블과 매핑되며, 모델 클래스의 각 필드는 테이블의 열(column)을 나타냅니다. 예를 들어, Post 모델을 정의하면, 장고는 이를 바탕으로 Post라는 이름의 테이블을 자동으로 생성합니다. 또한, 모델을 수정한 후 makemigrations와 migrate 명령어를 사용하면, 데이터베이스 스키마를 업데이트할 수 있습니다. 이를 통해 객체지향 방식으로 데이터베이스를 효율적으로 다룰 수 있습니다.
쿼리셋(QuerySet) 사용하기
장고 ORM에서 데이터를 조회할 때는 QuerySet을 사용합니다. QuerySet은 데이터베이스에서 가져온 객체들의 집합을 나타내며, 다양한 필터링과 정렬, 집계 등의 기능을 제공합니다. 예를 들어, Post.objects.all()은 모든 Post 객체를 반환하며, Post.objects.filter(title__contains='Django')는 제목에 "Django"가 포함된 게시글을 필터링하여 반환합니다. 이를 통해 복잡한 SQL 쿼리를 작성하지 않고도 다양한 조건으로 데이터를 조회할 수 있습니다.
데이터 삽입, 수정, 삭제
장고 ORM을 사용하면 데이터베이스의 데이터를 쉽게 삽입, 수정, 삭제할 수 있습니다. 새 객체를 생성하려면 모델 인스턴스를 만들고 save() 메서드를 호출합니다. 예를 들어, post = Post(title='New Post', content='This is a new post') 후 post.save()로 데이터를 삽입할 수 있습니다. 데이터를 수정할 때는 객체의 속성을 변경한 뒤 save()를 호출하고, 삭제하려면 delete() 메서드를 사용합니다. 이를 통해 데이터베이스 작업을 쉽게 처리할 수 있습니다.
모델 간 관계 설정하기
장고 ORM에서는 여러 모델 간의 관계를 설정할 수 있습니다. 1:N, N:M, 1:1 관계를 모델에 정의하여 데이터베이스에서 연결된 데이터를 쉽게 처리할 수 있습니다. 예를 들어, ForeignKey를 사용하여 1:N 관계를 설정하고, ManyToManyField로 N:M 관계를 설정합니다. 관계를 설정하면, 관련된 데이터를 쉽게 조회할 수 있으며, 예를 들어 post.author.name과 같은 방식으로 관련된 데이터를 간단하게 가져올 수 있습니다. 이를 통해 복잡한 데이터베이스 관계를 효율적으로 관리할 수 있습니다.