장고는 모델로 데이터를 관리한다. 보통 웹 개발에서는 데이터의 저장 및 조회를 위해 SQL 쿼리문을 이용하는데, 모델을 사용하면 SQL 쿼리문을 몰라도 데이터를 관리할 수 있다.
장고 ORM은 쿼리문을 몰라도 데이터 작업을 할 수 있다.
ORM은 파이썬으로 데이터 작업을 할 수 있게 해주는 기능이라고 생각하면 되고, 즉 장고에서는 쿼리문을 몰라도 파이썬을 안다면 데이터를 다룰 수 있다.
ORM은 데이터베이스 사용 방식의 단점 3가지를 제거한다.
1. 쿼리문은 같은 목적으로 작성해도 개발자마다 다양한 쿼리문이 만들어지므로 통일성이 깨진다.
2. 개발자가 쿼리문을 잘못 작성하게 되면 시스템의 성능이 저하될 수 있다.
3. 데이터베이스를 변경하려면(MySQL -> 오라클) 특정 데이터베이스의 의존하는 쿼리문을 모두 수정해야 하므로 유지 보수의 어려움이 생긴다.
장고의 ORM은 데이터베이스의 테이블을 모델화하여 사용하기 때문에 위에서 열거한 단점이 모두 사라진다.
# home>models.py
from django.db import models
class Question(models.Model):
subject = models.CharField(max_length=200, null = False) # 글자 수를 제한하고 싶은 데이터는 CharField를 사용해야 한다.
content = models.TextField() # 긴 문자열 데이터타입, 글자 수 제한이 없는 데이터는 TextField를 사용해야 한다.
create_date = models.DateTimeField(auto_now = True) # 시간, 날짜 데이터를 자동으로 넣어준다.
앞의 subject, content, create_date는 내가 정하는 것이다.
테이블 작업 파일을 만드는 makemigrations 명령을 먼저 실행한다.
> python manage.py makemigrations
테이블 작업 파일을 만들었으므로 이제 테이블을 생성하는 migrate 명령을 실행한다.
> python manage.py migrate