티스토리 뷰

Web/Django

[Django] Model 기초

HAN_PY 2020. 6. 28. 09:52
반응형

Model

MTV 패턴에서 데이터를 관리한다.

DB의 스키마에 해당하는 class를 만든다.

class를 만들면 migration과 migrate를 통해 table이 생성 된다. 

이 떄 , class는 models.Model의 상속을 받는다.

커뮤니티에서 게시글과 사용자를 DB에 저장한다.

 

1. Scheme

각각의 열(column)이 어떤 type을 가지는지 미리 정의하는 것이다.

ex) 이름은 문자열만 받고 전화번호는 숫자만 받는다.

 

2. Table

하나의 DB는 여러개의 table이 존재한다.

ex) 엑셀로 치면 table하나는 sheet하나라고 생각하면 된다.

 

3. column/row

행 = 가로 = row = 레코드

열 = 세로 = column = 속성 = 필드

 

 

Model in django

데이터에 대한 단일 정보 소스로 fields(속성)과 behavior(method)를 포함한다

 

데이터베이스(table)

여러사람이 공유하여 체계화해 통합, 관리하는 데이터의 집합 스키마이다. 각각의 세로(colume)당 들어가는 속성(fields)이 다르다.

 

Migrations

모델의 변경사항들을 데이터베이스 스키마에 반영하는 방법

데이터베이스 스키마를 위한 버전관리 시스템이라고 생각하자(git과 비슷)

 

 


 

models.py(DB 모델링을 해보자)


class Article(models.Model):

    title = models.CharField(max_length=140)

    content = models.TextField()

    created_at = models.DateTimeField(auto_now_add=True)

    updated_at = models.DateTimeField(auto_now=True)

 


= 을 기준으로

왼쪽 - table의 칼럼의 이름

오른쪽 - 데이터 Type에 맞게 Field를 정의

 

 

models.Model

models의 Model을 상속받아 Article이라는 클래스를 만들었다.

모델 클래스를 만들 떄 반드시 상속을 하도록 하자. 

왜냐하면 앞으로 Article.object.all() 같은 것들로 데이터를 불러오거나 조작을 할 것이다. 

이때, objet.all 은 내가 정의한 메서드가 아니라 Model을 상속 받았기 때문에 쓸 수 있는 method들이다.

 

title = models.CharField(max_length=140)

문자열을 저장+ 크기는 150이하

CharField는 max_length를 필수옵션으로 적어주어야 한다.

 

content = models.TextField()

내용은 textField이다. 보통 짧은 글을 쓸 경우는 CharField를 사용하고, 긴 글의 경우는 TextField를 사용한다.

CharField와 TextField 중 사용할 것을 선택하는 방법은 개발자가 받으려는 text의 크기에 따라 지정하면 된다.

 

created_at = models.DateTimeField(auto_now_add=True)

생성시간을 자동으로 저장한다.

+auto가 들어가는 것들은 가용자들이 직접 입력하지 못하게 내부적으로 만들어 져있다.

 

updated_at = models.DateTimeField(auto_now=True)

수정시간을 자동으로 저장한다.

+auto가 들어가는 것들은 가용자들이 직접 입력하지 못하게 내부적으로 만들어 져있다.

 

 

content = models.TextField

뒤에 ( )를 넣어주자. 왜냐하면 객체저장이 아닌 인스턴스 저장이기 때문이다.

 

 


DB 반영할 준비

python manage.py makemigrations

터미널에 치면 0001_initial.py 파일이 생성된다.

 

DB에 반영

python manage.py migrate

 

DB에 반영 됐는지 확인

admin.py

from .model import Article

admin.site.register(Article)

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함