Python에서 기본으로 제공하는 SQLite를 통해 데이터베이스를 다룬다.
모델이란 데이터에 대한 단 하나의 확실한 정보 출처이다.
여론조사 앱에서 Question과 Choice라는 두 가지 모델을 만들게 된다.
polls/models.py
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
Django에서 모델은 클래스로 표현된다.
각 클래스 변수는 모델에서 데이터베이스 필드를 나타낸다.
데이터베이스의 각 필드는 Field 클래스의 인스턴스로서 표현된다. CharField는 character 필드를 표현하고, DateTimeField는 날짜와 시간 필드를 표현한다.
몇몇 Field 클래스들은 필수 인수가 필요하다.
그리고 ForeignKey를 사용하여 관계설정에 대해 설명한다.
mysite에 있는 polls앱은 활성화&비활성화하며 꼈다뺐다 할수있다.
mysite/settings.py에
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
INSTALLED_APPS 설정에 'polls.app.PollsConfig'를 추가해줘서 프로젝트에 polls앱을 활성화 해준다.
Django에서는 migration을 통해 모델의 변경 내역을 DB Schema로 다룬다. 마치 git처럼 모델의 변경 내역을 버전으로 관리한다.
그 이후에
python manage.py makemigrations polls
으로 polls라는 migration을 생성해준다.
Migrations for 'polls':
polls/migrations/0001_initial.py
- Create model Question
- Create model Choice
라는 메세지가 뜨면서 Django에게 모델의 변경사항(model Question, Choice의 생성)을 전달해줍니다.
sqlmigrate는 app_label과 migration_name을 인수로 받아서 해당 migration을 실행하지 않고 화면에 출력하여 확인할 수 있다.
python manage.py shell
Interactive Python shell을 통해 Django API를 다룰 수 있다.
명령어는 귀찮으니까 생략할래
다음편은 없나요?