django DB 테이블 및 column 정의

MIN·2023년 9월 25일
post-thumbnail
이 글은 아이티뱅크 강의를 듣고 공부한 내용을 토대로 작성한 글입니다.
혹시 잘못된 내용이 있을 시 댓글로 알려주시면 감사하겠습니다 ^U^

🥑 models.py 클래스 작성

테이블을 생성하고 싶은 APP의 models.py에서 작업한다.
그리고 아래와 같이 코드를 작성한다.

from django.db import models

# Create your models here.

class Board(models.Model):
    title = models.CharField(max_length=20)
    content = models.TextField(max_length=500)
    create_date = models.DateTimeField(auto_now_add=True)
    modify_date=models.DateTimeField(auto_now=True, null=True, blank=True)

    def __str__(self):
        return self.title

이제부터 위 코드를 하나씩 뜯어보도록 하자!!

  • 먼저 Model클래스를 상속받는 Board클래스를 정의해준다.
    이 클래스는 필드를 정의하기 위한 모델 클래스이다.

  • 클래스 안의 각 한 줄이 Table 및 column을 정의하고 있다.

  • Table / column 은 필드타입과 필드 옵션을 통해 정의한다.
    (괄호에 있는 것이 필드 옵션이다.)

  • id column은 이미 Model class에 정의되어 있다.
    이 id column은 PK, Auto Increament 제약조건이 미리 정의되어 있다.


💡 필드타입

필드타입에는 여러가지가 있지만 위에서 사용한 타입만 적어보았다.
( + FileField )

  • CharField : 짧은 문자열을 넣을 때 사용하는 필드타입이다.
  • TextField : 많은 문자열을 넣을 때 사용하는 필드타입이다.
  • DateTimeField : 날짜 및 시간을 넣는 필드타입이다.
  • FileField : 파일을 업로드할 때 사용하는 필드타입이다.

💡 필드옵션

필드옵션도 마찬가지로 여러가지가 있지만 위에서 사용한 옵션만 적어보았다.

  • max_length : 문자형식 데이터의 최대길이 지정
  • auto_now_add : 생성된 날짜 및 시간 자동입력
  • auto_now : 수정된 날짜 및 시간 자동입력
  • null : True시 DB에서 null값으로 저장되는 것을 허용 ( 기본값: False )
  • blank : 폼에서 빈 값으로 DB에 저장되는 것을 허용 ( 기본값: False )

( blank = False 면 필수항목, True 면 선택항목 )


🥑 migration 이란?

데이터베이스의 변경 내역을 저장시키는 단순한 파일이다.
테이블을 생성하거나 index를 부여하는 등의 코드들이 들어가있다.

우리는 위와 같이 클래스를 정의하고 이를 데이터베이스로 만들기 위해서는 반드시 아래와 같은 migration 생성 명령어
를 사용해야 한다.

python manage.py makemigrations

명령어 뒤쪽에 app의 이름을 넣어주면 그 app에 대해서만 migration을 생성하며 생략시 모든 app에 migration을 생성하게 된다.

위 명령어를 쳤다면 현재 APP폴더 안에 migration 폴더가 생성되었음을 확인할 수 있다.

하지만 마이그레이션을 생성만한다고 테이블이 만들어지는 것은 아니다.
migration을 적용하는 명령어
를 또 쳐주어야 한다.

python manage.py migrate

마이그레이션을 적용하며 DB에 변경사항을 적용하는 명령어이다.
이 명령어를 수행해야만 비로소 DB가 변경된다.

🥑 관리자 페이지 등록

우리가 만든 테이블을 GUI로 확인하기 위해서는 관리자 페이지를 등록해주어야 한다.
해당 APP의 admin.py에서 작업한다.

from django.contrib import admin
from .models import Board

# Register your models here.

admin.site.register(Board)

위와 같이 코드를 쳐주면 관리자 페이지가 등록된다!

이 admin.py 는 사용자가 관리자 페이지를 커스텀하기 위한 파일이다.
ORM으로 관리되는 테이블을 관리자 페이지에 표시하여 GUI로 테이블을 관리
할 수 있다!


이제 서버를 실행하여 관리자 페이지에 들어가면
Board 테이블을 확인할 수 있다^^

profile
기초부터 시작하는 감쟈 ※ 소개글 확인해주세요!! ※

0개의 댓글