๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐“ก๐“ธ๐“ธ๐“ถ4: ๐ต๐’ถ๐’ธ๐“€๐‘’๐“ƒ๐’น/๐“ก๐Ÿฆ๐Ÿข๐Ÿฃ:๐’Ÿ๐’ฟ๐’ถ๐“ƒ๐‘”๐‘œ

[Django] 6. model์˜ ์ดํ•ด

์Ÿ๊ณ ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด model์ด๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•œ๋‹ค!

 

๋ชจ๋ธ : ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ์›น์‚ฌ์ดํŠธ์—์„œ ๋‹ค๋ฃฐ ์ •๋ณด์˜ ๋‚ด์šฉ, ํŠน์„ฑ์„ ๊ธฐ์ˆ ํ•˜๊ฑฐ๋‚˜ ์ •์˜ํ•œ ๊ฒƒ

์ €์žฅํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๊ธฐ ์›ํ•˜๋Š” ์ •๋ณด๋“ค์„ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ฐœ๋…ํ™” ํ•œ ๊ฒƒ. (์Šคํ‚ค๋งˆ)

 

๊ฒŒ์‹œ๊ธ€, ํšŒ์›์ •๋ณด ๋“ฑ๋“ฑ

DB์ฐฝ๊ณ ์— ์ €์žฅ๋จ

 

DB: ์‹œ์Šคํ…œ. ์‹ค์ œ๋กœ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„์„ ๋งํ•จ-> ๋ชจ๋ธ๋ง๋œ ์Šคํ‚ค๋งˆ์˜ ์ •๋ณด๋ฅผ ๋”ฐ๋ฅด๋Š” ํ…Œ์ด๋ธ”๋“ค์˜ ์ง‘ํ•ฉ.

 

1) ์ข…๋ฅ˜(์ •๋ณด) : ๋ง›์ง‘, ํ‰๊ฐ€, ํšŒ์›

2) ์†์„ฑ : (์ฃผ์†Œ, ๋ช…์นญ, ์ „ํ™”) , (๋ณ„์ , ํšŒ์› ์ •๋ณด, ์ฝ”๋ฉ˜ํŠธ), (์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋‹‰๋„ค์ž„)

3) ์ž๋ฃŒํ˜• : (string, string, string) , (int, ํšŒ์› model reference(relation), string), (string, string, string)

4) relation ๊ด€๊ณ„ ์ •์˜. 

 

django model์˜ ๊ฒฝ์šฐ DB ์ข…๋ฅ˜๊ฐ€ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ๋ฒ„์ „์ด ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ์ฝ”๋“œ ์ˆ˜์ •์„ ๋งŽ์ด ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ์ž๋™์œผ๋กœ ์—ฐ๊ฒฐํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

 

- Model Class ์„ ์–ธ

 

์ฐธ๊ณ ๋กœ ๋‚œ python3 ๋ฅผ ๋ถ™์—ฌ์ค˜์•ผ ํ•œ๋‹ค.. ์ €๊ฑฐ ์•ˆ๋ถ™์—ฌ์„œ ๋˜ ํ•œ์ฐธ ์™œ ์•ˆ๋ผ?!?!ํ•˜๊ณ  ์žˆใ……์—ˆ์Šด

 

setting ์—์„œ second app ์ถ”๊ฐ€

from django.db import models

# Create your models here.

class Post(models.Model):
    title = models.CharField(max_length = 30)
    content = models.TextField()

    created_at = models.DateTimeField(auto_now_add=True) #์ด post ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€
    updated_at = models.DateTimeField(auto_now=True) #์ตœ๊ทผ ์ˆ˜์ •์ผ

    

๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ชจ๋ธ class๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ์š”๋กœ์ฝ”๋กฌ url์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ๊ธฐ์กด first์—๋„ ๊ฒฝ๋กœ๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค

 

from django.urls import path
from . import views

urlpatterns = [
]

๊ทธ๋ฆฌ๊ณ  first ๋•Œ ์ฒ˜๋Ÿผ second ์•ˆ์—๋„ urls.py๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค.

 

settings.py ์— ๊ฐ€๋ณด๋ฉด DB ์—”์ง„์ด sqlite๋กœ ์ •์˜๋˜์–ด ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜์ค‘์— ํ”„๋กœ์ ํŠธ๊ฐ€ ๋” ์ปค์ง€๋ฉด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ. 

 

์ด์ œ ์ž˜ ๋Œ์•„๊ฐ€๋‚˜ runserver๋ฅผ ํ•˜๊ธฐ ์ „์—!

์š”๋กœ์ฝ”๋กฌ 'makemigrations'์„ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

์–˜๋ฅผ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ์ •์˜ํ•œ model์„ DB ์—”์ง„์— ๋งž๊ฒŒ ์ฝ”๋“œํ™”(?) ํ•  ์ˆ˜ ์žˆ์Œ

๋ชจ๋ธ์„ ๋ฐ”๊ฟจ์œผ๋ฉด ์ €๊ฑธ ํ•œ ๋ฒˆ ํ•ด์ค˜์•ผ ํ•จ.

์ด์ œ ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆฌ๋ฉด..!

์ด๋ ‡๊ฒŒ migrate๋ฅผ ํ•˜๋ผ๋Š” ์–˜๊ธฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

ํ•˜๋ž€ ๋Œ€๋กœ migrate๋ฅผ ํ•ด์ฃผ๋‹ˆ ์ด๋ ‡๊ฒŒ ๋ญ๊ฐ€ ์ž”๋œฉ ๋œจ๊ณ 

 

firstdjango ์•ˆ์— db.sqlite3๋ผ๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ผ์ด ํ•˜๋‚˜ ์ƒ์„ฑ๋˜์—ˆ๋‹ค!

 

๋Œ€์ถฉ model ๋ฐ”๊พธ๊ฑฐ๋‚˜ ๋งŒ๋“ค๋ฉด makemigrations- migrate๋ฅผ ๊ผญ ํ•ด์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋  ๋“ฏ