Leta Learns

django | Model & Admin 본문

Django

django | Model & Admin

leta 2021. 7. 6. 12:52

 

models.py

from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField(max_length=200)
    writer = models.CharField(max_length=10)
    pub_date = models.DateTimeField()
    body = models.TextField()

1. django의 DB로부터 models라는 모듈을 import (기본 세팅되어있음)

 

2. 클래스명은 항상 대문자로 시작. 

   models.Model => 위에서 import한 models라는 모듈 안에 있는 Model이라는 클래스를 상속.

 

3. 필드타입 및 필드옵션은 외울 필요 x, 그때그때 찾아서 쓰면 됨.

   in 문자열, CharField() => max_length 사용하여 최대 글자 수를 반드시 정해줘야 함.

   in 생성시간, DateTimeField() => 날짜와 시간 데이터 저장하는 필드

   in 본문, TextField()

 

 


 

 

 

$ python manage.py makemigrations

#migration을 make한다. 앱 내에 migration 폴더를 만들어서 models.py의 변경사항을 저장.

 

$ python manage.py migrate

#migration에 저장되어 있는 것들을 실행시켜서 DB에 적용한다.

 

=> models.py에 변경사항이 생겼을 경우 makemigrations, migrate 꼭 해주어야 함!

더보기

migrate 하는 이유 : 모델에서 정의한 클래스(ORM)를 DB에 적용하기 위해.

 => 메소드의 경우 DB랑 연관된 것이 아니라 장고 내부적으로 처리하는 거라서 migrate 필요 x

      models.py의 변경사항이 메소드 관련일 경우 => makemigrations, migrate 안 해도 됨.

 

 

$ python manage.py createsuperuser

#관리자 권한을 가진 superuser 만들기

 

관리자 페이지에 들어오면 위에서 만든 Blog 테이블은 존재 x

=> models에게 우리가 Blog를 등록했다는 것을 알려줘야 함.

 

 

admin.py (=> Model 등록하기)

from django.contrib import admin
from .models import Blog #같은 폴더(.)안에 있는 models 모듈에서 Blog 앱을 import
# Register your models here.

admin.site.register(Blog)

 

 

글 작성하면 Blog object(1) 의 형태로 뜬다. => models.py 들어가서 수정!

from django.db import models

# Create your models here.
class Blog(models.Model):
    title = models.CharField(max_length=200)
    writer = models.CharField(max_length=10)
    pub_date = models.DateTimeField()
    body = models.TextField()
    
    def __str__(self):
        return self.title

__str__ 메소드 : 인스턴스 자체를 출력할 때 형식 지정하는 함수

 

시간 수정 => settings.py TIME_ZONE = 'Asia/Seoul'

 

 

 

 

Comments