[모각코][210731] Django Blog 예제 - Model 구현

Jinhyung Rhee·2021년 8월 4일
0
post-thumbnail

Model

  • 데이터베이스 내의 기본적인 테이블의 뼈대를 만들고 데이터를 입력받음

app 등록

  • settings.py에 app 등록하기
...
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]
...

클래스 생성

  • models.py에 클래스 생성하기
from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length=200)
    writer = models.CharField(max_length=100)
    pub_date = models.DateTimeField()
    body = models.TextField()

주의!

  • 클래스 이름은 테이블 이름(Blog)와 같아야 함!

테이블 생성 명령어 입력

  • makemigrations
    - 앱 내의 migration폴더를 만들어 models.py의 변경사항 저장하는 명령어
    - '~이런 테이블을 만들 것이다!'라는 것을 migrations폴더에 저장키는 것
    - 성공 시 'Create model Blog' 메시지 출력
  • migrate
    - migrations폴더를 실행시켜 DB에 적용시키는 명령어
    - migrations폴더의 변경사항을 확인한 뒤 db.sqlite3 DB에 적용시킴
    - 모델에 변경사항이 있을 경우
    • makemigratios먼저 한 뒤 migrate 입력!

테이블을 admin 사이트에 등록

  • admin.py 작성
    - models.py에서 만든 Blog테이블을 admin 사이트에 등록하는 것
from django.contrib import admin
from .models import Blog

admin.site.register(Blog)
  • admin 패널
    - migration한 DB 테이블들을 쉽게 확인 가능!
    - admin은 django 처음 세팅 시 urls.py에 path로 연결되어 있음
    - admin 페이지에 접근하려면 관리자 권한 아이디(superuser) 생성해야 함!
    • $ python manage.py createsuperuser

메서드 오버라이딩(Overriding)

from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length=200)
    writer = models.CharField(max_length=100)
    pub_date = models.DateTimeField()
    body = models.TextField()

    # override
    def __str__(self):
        return self.title
  • __str__ : 객체가 호출될 시 나타나는 이름(이름표)같은 것
  • 메서드 오버라이딩을 통해 객체가 호출되었을 때 글의 제목이 나타나도록 설계
profile
기록하는 습관

0개의 댓글