icon picker
장고 모델

블로그 내 모든 포스트를 저장하는 부분을 만들어 봅시다.
장고 안의 모델은 객체의 특별한 종류입니다. 이 모델을 저장하면 그 내용이 데이터베이스에 저장되는 것이 특별한 점이죠.

어플리케이션 만들기

어플리케이션을 만들기 위해 콘솔 창에서 아래 명령어를 실행하세요
(djangogirls 디렉토리에서 manage.py 파일)
<command-line>
(myvenv) ~/djangogirls$ python manage.py startapp blog
이제 blog디렉터리가 생성되고 그 안에 여러 파일도 같이 들어있는 것을 알 수 있습니다.
현재 디렉토리와 파일들은 다음과 같을거에요
image.png
어플리케이션을 생성한 후 장고에 사용한다고 알려줘야 합니다.
이 역할을 하는 파일이 mysite/settings.py입니다.
이 파일 안에서 INSTALLED_APPS를 열어, )바로 위에 'blog'를 추가하세요. 최종 결과물은 아래와 다음과 같을겁니다.
image.png

블로그 글 모델 만들기

모든 Model 객체는 blog/models.py 파일에 선언하여 모델을 만듭니다. 이 파일에 우리의 블로그 글 모델도 정의할 거에요.
blog/models.py 파일을 열어서 안에 모든 내용을 삭제한 후 아래 코드를 추가하세요.
< blog/models.py >
from django.conf import settings
from django.db import models
from django.utils import timezone

class Post(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)

def publish(self):
self.published_date = timezone.now()
self.save()

def __str__(self):
return self.title

코드에 대한 설명을 해드릴게요
from 또는 import로 시작하는 부분은 다른 파일에 있는 것을 추가하라는 뜻입니다.
class Post(models.Model):는 모델을 정의하는 코드입니다.
class는 특별한 키워드로, 객체를 정의한다는 것을 알려줍니다.
Post는 모델의 이름입니다. (특수문자와 공백 제외한다면) 다른 이름을 붙일 수도 있습니다. 항상 클래스 이름의 첫 글자는 대문자로 써야 합니다.
models은 Post가 장고 모델임을 의미합니다. 이 코드 때문에 장고는 Post가 데이터베이스에 저장되어야 한다고 알게 됩니다.
이제 속성을 정의하는 것에 대해서 설명할게요
(데이터 타입에는 텍스트, 숫자, 날짜, 사용자 같은 다른 객체 참조 들이 있어요)
models.CharField - 글자 수가 제한된 텍스트를 정의할 때 사용합니다. 글 제목같이 짧은 문자열 정보를 저장할 때 사용합니다.
models.TextField - 글자 수에 제한이 없는 긴 텍스트를 위한 속성입니다. 블로그 콘텐츠를 담기 좋겠죠?
models.DateTimeField - 날짜와 시간을 의미합니다.
models.ForeignKey - 다른 모델에 대한 링크를 의미합니다.

데이터베이스에 모델을 위한 테이블 만들기

이 장의 마지막 단계입니다. 이제 데이터베이스에 우리의 새 모델, Post 모델을 추가할 거에요.
먼저 우리는 장고 모델에 몇가지 변화가 생겼다는 걸 알게 해줘야해요!
터미널에 python manage.py makemigrations blog 를 입력해 보세요.
아래와 같이 보일거에요!
image.png

*python manage.py migrate [app_name] [migration_name]

장고는 데이터베이스에 지금 반영할 수 있도록 마이그레이션 파일이라는 것을 준비해놨어요!
이제 python manage.py migrate blog 명령을 실행해, 실제 데이터베이스에 모델 추가를 반영하겠습니다!
터미널에 python manage.py migrate blog 를 입력해보세요
아래와 같이 보일거에요!
image.png
이제 글 모델이 데이터베이스에 저장되었어요!
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.