django - 튜토리얼 part2

whybein·2020년 2월 8일
0

django

목록 보기
4/13
post-thumbnail

https://velog.io/@swhybein/django-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-part1
part1에 이어서 part2를 진행해 보겠습니다.

https://docs.djangoproject.com/ko/3.0/intro/tutorial02/

1. 데이터베이스 설치

  • django는 데이터베이스sqlite3를 기본 제공해 따로 설치할 필요가 없습니다. 프로젝트 폴더 안에 db.sqlite3 파일로 저장됩니다.

  • mysite/settings.py 파일에 INSTALLED_APPS를 보면 기본 app이 나열되어 있는데 이 app들도 데이터베이스 테이블을 사용합니다. 아래 명령어를 사용하면 INSTALLED_APPS에 있는 앱에 대한 데이터베이스가 생성됩니다. 이 과정이 꼭 필요한 것은 아닙니다.

    	`$ python manage.py migrate`

2. 모델 만들기

모델이란 부가적인 메타데이터를 가진 데이터베이스의 구조(layout)를 말합니다. polls앱에 두 개의 모델 Question 그리고 Choice를 만들 건데 각각이 표 하나라고 생각하면 됩니다.

  • Question의 필드(또는 칼럼) 1.질문 2.질문 시각
  • Choice의 필드(또는 칼럼) 1.질문 2.답변(선택지) 3.답변 횟수
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)
  • QuestionChoice 각 모델은 class로 정의하며 django.db.models.Model.를 상속 받게 됩니다.
  • Charfield는 한 줄 정도의 문자를, DateTimeField는 날짜와 시간을, IntergerField는 숫자(정수) 형식을 뜻합니다. max_length는 최대 글자수, default=0은 초기값입니다.
  • ForeignKeyChoiceQuestion을 연결해 주는 것으로 다대일(many-to-one) 관계로 설정됐으며 on_delete=models.CASCADE는 원래 데이터인 Question이 삭제될 경우 이 필드가 삭제된다는 의미입니다.
    - ForeignKey 로 연결할 때 일대다(one-to-many) 또는 다대다(many-to-many) 관계로도 설정이 가능합니다.

모델 활성화

모델을 만들고 꼭 해야하는 것이 프로젝트 settings.py 파일에 추가하는 것입니다.

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',
]
  • 모델을 추가 또는 변경했을 경우 makemigration명령어를 통해 변경사항을 migration으로 저장합니다. 각 앱마다 migrations폴더가 따로 있고 0001_initial.py파일이 생긴 것을 볼 수 있습니다.

    	`$ python manage.py makemigrations polls`
Migrations for 'polls':
  polls/migrations/0001_initial.py:
    - Create model Choice
    - Create model Question
    - Add field question to choice



  • 저장한 모델의 데이터베이스를 생성(업데이트)합니다.

    	`$ python manage.py migrate`
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Rendering model states... DONE
  Applying polls.0001_initial... OK
profile
Back-End Developer

0개의 댓글