'웹 공부 자료' 시리즈애플리케이션 개발하기_Model 코딩

1. 모델 작업

모델 작업은 데이터베이스에 테이블을 생성하는 작업

2. 테이블 정의

model.py


class Question(models.Model):  
    question_text = models.CharField(max_length=200)  
    pub_date = models.DateTimeField('date published')  
  
    def __str__(self):  
        return self.question_text  
  
class Choice(models.Model):  
    question = models.ForeignKey(Question, on_delete=models.CASCADE)  
    choice_text = models.CharField(max_length=200)  
    votes = models.IntegerField(default=0)  
  
    def __str__(self):  
        return self.choice_text

장고에서 테이블을 하나의 클래스로 정의, 테이블의 칼럼을 클래스의 변수(속성)로 매핑함

테이블 클래스는 django.db.models.Model 클래스를 상속받아 정의.

각 클래스 변수의 타입도 장고에서 미리 정의된 필드 클래스를 사용함.

테이블 칼럼명컬럼 타입장고의 클래스 변수장고의 필드 클래스
idinteger(id)(PK는 장고에서 자동 생성해줌)
question_textvarchar(200)question_textmodels.CharField(max_length=200)
pub_datedatetimepub_datemodels.DateTimeField('date published')
테이블 칼럼명컬럼 타입장고의 클래스 변수장고의 필드 클래스
idinteger(id)(PK는 장고에서 자동 생성해줌)
choice_textvarchar(200)choice_textmodels.CharField(max_length=200)
votesintegervotesmodels.IntegerField(default=0)
question_idintegerquestionmodels.ForeighKey(Question)
  • PK(Primary Key) 는 클래스에 지정해주지 않아도 PK에 대한 속성을 Not Null 및 Autoincrement로 이름은 id로 자동으로 만들어준다.
  • date published 는 pub_date 컬럼에 대한 레이블 문구.
  • FK(Foreign Key) 는 항상 다른 테이블의 PK에 연결되므로 Question 클래스만 지정하면 됨.
    • 실제 테이블에서 FK로 지정된 칼럼은** _id 접미사** 가 붙음
  • _str_() 메소드 를 정의하지 않으면 테이블명이 제대로 표시되지 않음.

3. Admin 사이트에 테이블 반영

models.py 파일에서 정의한 테이블도 Admin 사이트에 보이도록 등록

admin.py


from django.contrib import admin  
from polls.models import Question, Choice  
  
# Register your models here.  
  
admin.site.register(Question)  
admin.site.register(Choice)

admin.site.register() 함수를 사용하여 임포트한 클래스를 Admin 사이트에 등록

테이블을 새로 만들 때는 model.pyadmin.py 두 개 파일을 함께 수정해야 함.

4. 테이터베이스 변경사항 반영

데이터베이스에 변경이 필요한 사항이 있으면, 데이터베이스에 실제로 반영해주는 작업을 해야 함.


python manage.py makemigrations
python manage.py migrate

A. migration

테이블 및 필드의 생성, 삭제, 변경 등과 같이 데이터베이스에 대한 변경사항을 알려주는 정보

애플리케이션 디렉토리별로 마이그레이션 파일이 존재함.

makemigrations 명령에 의해 polls/migrations 디렉토리 하위에 마이그레이션 파일들이 생기고, 이 마이그레이션 파일들을 이용해 migrate 명령으로 데이터베이스에 테이블을 만든다.

참고문헌

김석훈, "Django로 배우는 쉽고 빠른 웹개발 파이썬 웹프로그래밍", 개정판, 4쇄, 한빛미디어, 2020년

#Django #Model #MVT

0분전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.