티스토리 뷰
Migration
Model로 정의된 데이터베이스 스키마를 반영한다
쉽게 말해서 DataBase에 반영한다고 생각하자.
models.py(DB 모델링을 해보자)
class Article(models.Model):
title = models.CharField(max_length=140)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
모델링 후
DB에 반영 할 준비
> pyrhon manage.py makemigrations
0001_initial.py가 생성된다. 눌러서 들어가 본 후에 오타없나 확인 후의 migrate를 진행한다.
DB에 반영
> python manage.py migrate
DB에 반영 여부를 확인
> python manage.py showmigrations
[] : 미반영
[x] : 반영
admin.py
DB반영이 됐는지 확인을 위해 admin.py 아래와 같이 코드를 작성한다.
from .models iport Article
admin.site.register(Article)
코드의 해석은 모델에서 Article을 불러와서 그 Article을 어드민 싸이트에 등록해달라는 뜻이다.
반영 확인
서버 실행전에 관리자 ID를 만들자.
>python manage.py createsuperuser
절차에 맞게 관리자 아이디를 만든다.
> python manage.py runserver (서버 실행)
서버들어가서 url뒤에 admin 붙임.
로그인 창에서 위에서 만든 아이디로 로그인을 하면, 데이터 관리가 가능하다.
migrate 후에 오타 발생 시
현재 상황은 models.py를 작성하고 migration을 하고 migrate를 했다. 그런데 오타를 발견 했다면???
수정 후 다시 makemigrations 하고 migrate 하면 된다. (git 처럼 변경사항이 migrations폴더에 쌓인다.)
단순 오타가 아닌, model에 문제 발생 시
db.sqlite3(우리가 쓰고 있는 DB)과 migrations 안에 있는 마이그레이트 파일(이력)들을 모두 지운다.
그리고 새롭게 다시 시작하자.(DB가 다 지워진다.)
+ 단, migrations 폴더를 지우면 안된다. __init__.py 가 있어야 모듈로 관리가 된다. 폴더를 지우고 다시 __init__.py를 만들어도 되지만, 굳이 그럴 이유가 없다.
'Web > Django' 카테고리의 다른 글
[django] CRUD 한번에 구현하기 (0) | 2020.06.30 |
---|---|
[Django] Model 기초 (0) | 2020.06.28 |
[Django] ORM (0) | 2020.06.24 |
[django] Form으로 사용자의 입력 받기+ModelForm (0) | 2020.06.22 |
[Django] CRUD_READ_상세보기(detail) (0) | 2020.06.21 |
- Total
- Today
- Yesterday
- nextjs autoFocus
- 자연어처리
- login
- nodejs
- react
- 클라우데라
- DFS
- next.config.js
- vuejs
- typescript
- BFS
- 자료구조
- pandas
- TensorFlow
- error:0308010C:digital envelope routines::unsupported
- logout
- Vue
- JavaScript
- useHistory 안됨
- read_csv
- react autoFocus
- useState
- Deque
- django
- UserCreationForm
- mongoDB
- Queue
- Python
- NextJS
- Express
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |