Migration์ด๋?
Django์์ Migration์ด๋, ์ฝ๊ฒ ๋งํด python์ผ๋ก ์๋ํ๋ ์น ํ๋ ์์ํฌ Django์์ python์ผ๋ก ์ง์ฌ์ง code๋ฅผ DB๊ฐ ์์๋ค์ ์ ์๊ฒ ์ค๋ช ํด์ฃผ๋ ์์ ์ด๋ค. model์ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ DB ์คํค๋ง์ ์ ์ฉ์์ผ ์ค๋ค.
1. Models ์ ์ํ๊ธฐ
์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ถ์์ง class๋ก ์ ์ํ๋ค.
๋ธ๋ก๊ทธ ๋ฐ์ดํฐ๋ก ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
from django.db import models
# Create your models here.
class Blog(models.Model):
# title ๋ณ์๋ ์ต๋ ๊ธธ์ด 200์ธ ์งง์ ๋ฌธ์์ด ํ์์ผ๋ก ์ ์
title = models.CharField(max_length=200)
# writer ๋ณ์๋ 100
writer = models.CharField(max_length=100)
# pub_date ๋ ๋ ์ง-์๊ฐ ํ์์ผ๋ก ์ ์
pub_date = models.DateTimeField()
body = models.TextField()
Data Field ์ข ๋ฅ
ํ๋ ํ์ | HTML ์์ ฏ | ์ค๋ช |
BooleanField | CheckboxInput | 'True/False' ๊ฐ์ ๊ฐ์ง๋ ํ๋. |
CharField | TextInput | ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋. ์ต๋ ๊ธ์ ์(max_length) ์ต์ ์ ๋ฐ๋์ ์ง์ ํด์ผํจ |
DateField | TextInput | datetime.date ์ธ์คํด์ค์ธ ๋ ์ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋. ๋ฌ๋ ฅ ์์ ฏ๊ณผ ์ค๋ ๋ ์ง ์ ๋ ฅ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ์ ๊ณตํจ |
DateTimeField | TextInput | datetime.datetime ์ธ์คํด์ค์ธ ๋ ์ง์ ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋. ๋ ๊ฐ์ TextInput, ๋ฌ๋ ฅ ์์ ฏ, ์ค๋ ์์ง ์ ๋ ฅ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ์ ๊ณตํจ |
FloatField | NumberInput | Python์ float๊ณผ ๊ฐ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋. |
IntegerField | NumberInput | Python์ integer๊ณผ ๊ฐ์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํ๋. |
TextField | Textarea | max_length ๊ฐ์ ์ง์ ํ๋ฉด ํผ์์๋ ์ ํ๋์ง๋ง, ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ํฅ์ ์ฃผ์ง ์์ |
Field Option ์ข ๋ฅ
- null : DB ํ๋์ NULL ํ์ฉ ์ฌ๋ถ (๋ํดํธ : False)
- blank : ์ ๋ ฅ๊ฐ ์ ํจ์ฑ (validation) ๊ฒ์ฌ ์์ empty ๊ฐ ํ์ฉ ์ฌ๋ถ (๋ํดํธ : False)
- default : ๋ํดํธ ๊ฐ ์ง์ . ๊ฐ์ด ์ง์ ๋์ง ์์์ ๋ ์ฌ์ฉ
- unique : ์ ์ผ์ฑ ์ฌ๋ถ (๋ํดํธ : False)
- primary_key : ๊ธฐ๋ณธํค ์ค์ . ์ค์ ํ์ง ์์ผ๋ฉด ์๋์ ์ผ๋ก ๊ณ ์ ํ ์ ์๊ฐ id๋ฅผ ๊ธฐ๋ณธํค๋ก ์ค์
- choices : select box ์์ค๋ก ์ฌ์ฉ. ์ด์ค ํํ๋ก ์ต์
์ง์ ํ์
(์ฒซ๋ฒ ์งธ ์์: DB์ ๋ค์ด๊ฐ๋ ๊ฐ, ๋๋ฒ ์งธ ์์: html์ ํ์๋๋ ๋ด์ฉ) - help_text : ํ๋ ์ ๋ ฅ ๋์๋ง
2. DB์ ์ ์ฉํ๊ธฐ
Migrations ๋ง๋ค๊ธฐ
$ python manage.py makemigrations
- ์ฑ ๋ด์ migration ํด๋๋ฅผ ๋ง๋ค์ด์ models.py์ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅ
- python code๋ฅผ DB๊ฐ ์์๋ค์ ์ ์๋๋ก ๋ณ์ญ
DB migrate ํ๊ธฐ
$ python manage.py migrate
- Migration ํด๋๋ฅผ ์คํ์์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ
- ๋ฒ์ญ๋ ๋ณ๊ฒฝ์ฌํญ์ DB์ ์ ์ฅ ๋ฐ ๋ฐ์
3. Admin ๊ณ์ ์์ฑํ๊ธฐ
- Super User ์์ฑ
$ python manage.py createsuperuser
- Username(์ด๋ฆ), Email address(์ด๋ฉ์ผ), Password(๋น๋ฐ๋ฒํธ) ๋ฑ๋ก
- admin.py์ ํ์ฉํ ๋ฐ์ดํฐ ๋ฑ๋ก
from django.contrib import admin
from .models import Blog
# Register your models here.
# ๋ธ๋ก๊ทธ ์ฌ์ดํธ ๋ฑ๋ก
admin.site.register(Blog)
4. Models(DB) ์ฌ์ฉํ๊ธฐ
- views.py์ models.py ๊ฐ์ ธ์ค๊ธฐ
from .models import *
'Backend > ๐ต Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] ์ฅ๊ณ ์ ์ ํ์ผ ๊ด๋ฆฌํ๊ธฐ - Static, Media (0) | 2021.07.07 |
---|---|
[Django] ์ฅ๊ณ CRUD ๊ตฌํ - ๊ฒ์ํ ๊ธฐ๋ฅ (2) | 2021.07.07 |
[Django] ์ฅ๊ณ ์ค์ต/๊ฐ๋ฐ ํ๊ฒฝ ์ค๋นํ๊ธฐ - ํ๋ก์ ํธ ๋ฐ ์ฑ ์์ฑ (0) | 2021.05.11 |