Model : 저장된 데이터베이스의 구조
장고는 Model을통해 데이터에 접근하고 조작한다.
이러한 Model은 사용하는 데이터들의 필수 필드들과 동작들을 포함한다.
일반적으로 각각의 모델은 하나의 데이터베이스 테이블에 Mapping한다.
Model class 1개 = 데이터베이스 테이블 1개
Model 생성 실습
1. project를 생성한 후에, App을 생성 -> settings에 등록한다
2. App / models.py를 수정
원하는 컬럼과 필수 조건을 명시한다.
from django.db import models
# Create your models here.
class myapp(models.Model):
title = models.CharField(max_length=10)
content = models.TextField()
-> 모델을 생성 or 변경 후에는 터미널에 꼭 2가지 명령어를 써줘야한다.
1. python manage.py makemigrations
2. python manage.py migrate
이 명령어들을 실행하지 않으면 데이터베이스에 변경사항이 적용되지 않는다 !
자주 하는 실수중 하나임
※ 생성된 Model 수정 시 주의사항
class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.TextField()
Model class를 생성 후, 새로운 컬럼을 추가하고 makemigrations 하면 오류가 난다.
It is impossible to add a non-nullable field
-> 새로운 컬럼이 빈채로 들어와서 발생하는 오류
새로운 컬럼을 추가할 때는, null = Ture를 설정해주거나 default 값을 넣어줘야 한다.class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() author = models.TextField(null=True) abc = models.TextField(default='abc')
이렇게 해주면 오류가 안난다 !
3. 출력 형식 추가 ( 필수는 아님 )
python의 __str__ method를 사용하여 class의 출력 형식을 지정해준다.
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
author = models.TextField(null=True)
abc = models.TextField(null=True)
# 출력 형식 정해주기
def __str__(self):
return f'{self.title} {self.content}'
출력 형식을 지정하면 power shell을 이용해 데이터베이스 내용을 확인할 때, 지정한 형식으로 출력된다.
'django' 카테고리의 다른 글
[Django] CRUD - CREATE (0) | 2023.03.25 |
---|---|
[Django] admin 계정 생성하기 (0) | 2023.03.25 |
[Django] HTML form ( HTTP / 데이터 전송 / 데이터 받기) (0) | 2023.03.25 |
[Django] App URL mapping (0) | 2023.03.25 |
[Django] 하나의 html을 여러 App에서 돌려쓰기 (0) | 2023.03.15 |