๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Python Programming/Frameworks

< django - 4 >

by A Lim Han 2022. 7. 29.

4. ๋ชจ๋ธ + ์žฅ๊ณ  ์•ฑ migrate + ๋ชจ๋ธ ์†์„ฑ + ํ…Œ์ด๋ธ” ์ƒ์„ฑ + Question & Answer ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ

 

 

# ๋ชจ๋ธ

: ์žฅ๊ณ ๋Š” ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•จ. ์žฅ๊ณ ์˜ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด SQL ์ฟผ๋ฆฌ๋ฌธ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ)์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

 

# ํŒŒ์ด๋ณด์™€ ๋ชจ๋ธ

 

- ํŒŒ์ด๋ณด

: ์งˆ๋ฌธ, ๋‹ต๋ณ€์„ ํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ด์ฌ ๊ฒŒ์‹œํŒ ์„œ๋น„์Šค๋กœ, ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์ด ์žˆ์–ด์•ผ ํ•จ

 

- ๋ชจ๋ธ์˜ ์†์„ฑ (์ตœ์†Œ ์•„๋ž˜ 3๊ฐœ๋Š” ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•จ)

Question ๋ชจ๋ธ Answer ๋ชจ๋ธ
- subject : ์งˆ๋ฌธ ์ œ๋ชฉ

- content : ์งˆ๋ฌธ ๋‚ด์šฉ

- create_date : ์งˆ๋ฌธ ์ž‘์„ฑ ์‹œ๊ฐ„
- question : ์–ด๋–ค ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ธ์ง€

- content : ๋‹ต๋ณ€ ๋‚ด์šฉ

- create_date : ๋‹ต๋ณ€ ์ž‘์„ฑ ์ผ์‹œ

 

 

 

 

# ๋ชจ๋ธ ์ž‘์„ฑ๊ณผ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

1. ์งˆ๋ฌธ, ๋‹ต๋ณ€ ๋ชจ๋ธ์„ pybo/models.pyํŒŒ์ผ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•œ๋‹ค.

- max_length=200 : ์ œ๋ชฉ ์ตœ๋Œ€ ๊ธ€์ž๋Š” 200์ž

 

- ๊ธ€์ž์ˆ˜ ๊ธธ์ด๊ฐ€ ์ œํ•œ๋œ ํ…์ŠคํŠธ --> CharField ์‚ฌ์šฉ

  ๊ธ€์ž์ˆ˜ ๊ธธ์ด๊ฐ€ ์ œํ•œ๋˜์ง€ ์•Š์€ ํ…์ŠคํŠธ --> TextField ์‚ฌ์šฉ

  ์‹œ๊ฐ„, ๋‚ ์งœ์— ๊ด€๋ จ๋œ ์†์„ฑ --> DateTimeField ์‚ฌ์šฉ

 

- ๊ธฐ์กด ๋ชจ๋ธ์„ ์†์„ฑ์œผ๋กœ ๋‹ค๋ฅธ ๋ชจ๋ธ๊ณผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ForeignKey ์‚ฌ์šฉ

 

- on_delete=models.CASCADE --> ๋‹ต๋ณ€๊ณผ ๊ด€๋ จ๋œ ์งˆ๋ฌธ ์‚ญ์ œ ์‹œ ๋‹ต๋ณ€๋„ ๊ฐ™์ด ์‚ญ์ œ

 

 

 

2. pybo ์•ฑ์„ config/settings.pyํŒŒ์ผ์˜ INSTALLED_APPS ํ•ญ๋ชฉ์— ์ถ”๊ฐ€ํ•œ๋‹ค.

 

+ INSTALLED_APPS์— ์ถ”๊ฐ€ํ•œ pybo.apps.PyboConfig ํด๋ž˜์Šค๋Š” pybo/apps.py ํŒŒ์ผ์— ์žˆ๋Š” ํด๋ผ์Šค์ด๊ณ , ์ด ํŒŒ์ผ์€ pybo์•ฑ์ด ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์ง„๋‹ค. 

--> ๋”ฐ๋ผ์„œ ํŒŒ์ผ์„ ๋”ฐ๋กœ ์ƒ์„ฑํ•  ํ•„์š” ์—†์ด ์ด๋ฏธ pybo/apps.pyํŒŒ์ผ ์•ˆ์— ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋ž˜์Šค๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค.

 

 

 

3. ํ…Œ์ด๋ธ” ์ƒ์„ฑ์„ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด migrate ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

+ ์œ„ ์‚ฌ์ง„์˜ ๊ฒฝ์šฐ migrate๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ๋ชจ๋ธ์ด ๋ณ€๊ฒฝ, ํ˜น์€ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” makemigrations ๋ช…๋ น์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๊ณ  migrate ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

 

+ ์•„๋ž˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ python manage.py makemigrations๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•˜๋ฉด pybo\migrations\0001_initial.py ๋ผ๋Š” ํŒŒ์ด์ฌ ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ๋‹ค.

 

+ ์ •๋ฆฌํ•˜์ž๋ฉด makemigrations ๋ช…๋ น์€ ์žฅ๊ณ ๊ฐ€ ํ…Œ์ด๋ธ” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ž‘์—… ํŒŒ์ผ(ex. 0001_initial.py)์„ ๋งŒ๋“œ๋Š” ๋ช…๋ น์ด๊ณ , migrate ๋ช…๋ น์€ ์‹ค์ œ ํ…Œ์ด๋ธ” ์ž‘์—…์„ ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

 

 

 

4. ์œ„์˜ ์ž‘์—…์„ ๊ฑฐ์น˜๊ณ  migrate ๋ช…๋ น์ด ์‹คํ–‰๋˜๊ธฐ ์ „ ์‹ค์ œ๋กœ ์–ด๋–ค ์ฟผ๋ฆฌ๋ฌธ์ด ์‹ค์‹œ๋˜๋Š”์ง€ sqlmigrate ๋ช…๋ น์œผ๋กœ ํ™•์ธํ•œ๋‹ค.

: ์ด๋•Œ sqlmigrate ๋ช…๋ น์€ ์‹คํ–‰๋˜๋Š” ์ฟผ๋ฆฌ๋ฅผ '์กฐํšŒ'๋งŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ œ ์ฟผ๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๊ฒƒ์€ X

+ ๋งจ ์œ„์˜ python manage.py sqlmigrate pybo 0001 ๋ช…๋ น์—์„œ pybo ๋Š” ์•ฑ ์ด๋ฆ„, 0001์€ ์ƒ์„ฑ๋œ ์ž‘์—…ํŒŒ์ผ์˜ ์ผ๋ จ๋ฒˆํ˜ธ์ด๋‹ค.

 

 

 

5. migrate ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

 

 

 

 

# ๋ชจ๋ธ ์‚ฌ์šฉํ•˜์—ฌ Question ๋งŒ๋“ค๊ธฐ + id ํ™•์ธ

1. ๋ชจ๋ธ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๊ธฐ ์œ„ํ•ด python manage.py shell ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์—ฌ ์žฅ๊ณ  ์…ธ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ

์žฅ๊ณ  ์…ธ์€ ์žฅ๊ณ ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ๋“ค์ด ์ž๋™์œผ๋กœ ์„ค์ •๋˜๋ฉฐ ์‹คํ–‰๋œ๋‹ค.

+ ์ฃผ์˜!

์ผ๋ฐ˜ ํŒŒ์ด์ฌ ์…ธ์ด ์•„๋‹Œ ์žฅ๊ณ  ์…ธ์„ ์‹คํ–‰ํ•ด์•ผํ•จ

 

 

 

2. ์žฅ๊ณ  ์…ธ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์ด import  ํ•˜์—ฌ Question, Ansewer ๋ชจ๋ธ ์‚ฌ์šฉํ•  ์ค€๋น„ํ•˜๊ธฐ

 

 

 

3. Question ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ

+ Question ๋ชจ๋ธ์˜ create_data ์†์„ฑ์€ DataTimeFied ํƒ€์ž…์œผ๋กœ, timezone.now()์œผ๋กœ ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋Œ€์ž…ํ•˜์˜€๋‹ค.

 

+ ์œ„์™€ ๊ฐ™์ด Question ๋ชจ๋ธ์˜ ๊ฐ์ฒด q๋ฅผ ์ƒ์„ฑํ•˜๊ณ  save ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์งˆ๋ฌธ ๋ฐ์ดํ„ฐ๊ฐ€ 1๊ฑด ์ƒ์„ฑ๋œ๋‹ค. --> ๋ฐ์ดํ„ฐ๊ฐ€ 1๊ฑด ์ƒ์„ฑ๋˜๋ฉด ๊ผญ ์•„๋ž˜์™€ ๊ฐ™์ด  id ๊ฐ’์ด ์ƒ์„ฑ๋จ.

+  id  : ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€๋˜๋Š” ๋ชจ๋ธ ๋ฐ์ดํ„ฐ์˜ ์œ ์ผํ•œ ๊ฐ’์ด๋ฉฐ, ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค(PK = Primary Key)๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

 

 

4. Question ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์„ ๋งŒ๋“ค์–ด ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์˜ id๋ฅผ ํ™•์ธํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ์˜ id = 2 (+1 ๋จ)

 

 

 

 

# Question ์กฐํšŒ

1. Question.objects ๋ช…๋ น์„ ํ†ตํ•ด ์ €์žฅํ•œ Question ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ

+ Question.objects.all() ํ•จ์ˆ˜ --> ๋ชจ๋“  Question ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ Question ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” QuerySet ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

+ Question object (1), Question object (2) ์—์„œ 1, 2๋Š” Question ๋ฐ์ดํ„ฐ์˜ id ๊ฐ’

 

 

 

2. id ๊ฐ’ ๋Œ€์‹  ์ œ๋ชฉ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ํŒŒ์ด์ฐธ์—์„œ Question ๋ชจ๋ธ์— __str__ ๋ฉ”์„œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

+ ๋ชจ๋ธ์— ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ์—๋Š” makemigrations, migrate๊ฐ€ ํ•„์š” X --> ์–˜๋„ค ๋‘˜์€ ๋ชจ๋ธ ์†์„ฑ์ด ๋ณ€๊ฒฝ๋ฌ์„ ๋•Œ๋งŒ ์‚ฌ์šฉ

 

 

 

3. ์žฅ๊ณ  ์…ธ์„ ์žฌ์‹œ์ž‘ํ•˜๊ณ , Question.objects.all() ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•œ๋‹ค.

id ๊ฐ’์ธ 1, 2 ๋Œ€์‹  ์ œ๋ชฉ์ด ํ‘œ์‹œ๋จ

+ ์žฅ๊ณ  ์…ธ ์žฌ์‹œ์ž‘ ๋ฒ„ํŠผ : ๋ช…๋ น ํ”„๋กฌํฌํŠธ์— quit() ์ž…๋ ฅ OR Ctrl+z

 

 

 

4. filter, get ์„ ์‚ฌ์šฉํ•˜์—ฌ id๊ฐ’์ด 1์ธ Question  ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ

filter get
# ์กฐ๊ฑด์— ํ•ด๋‹น๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๋ฆฌํ„ด
=> ๋‹ค๊ฑด ๋ฆฌํ„ด

# ๋‹ค๊ฑด์„ ์˜๋ฏธํ•˜๋Š” QuerySet ์„ ๋ฆฌํ„ด
# ํ•œ๊ฑด๋งŒ ๋ฆฌํ„ด
=> ๋ฐ˜๋“œ์‹œ 1๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ + id ๊ฐ™์€ ์œ ์ผ๊ฐ’์œผ๋กœ ์กฐํšŒํ•  ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉ

# Question ๋ชจ๋ธ ๊ฐ์ฒด๋งŒ ๋ฆฌํ„ด

 

+ ์ฃผ์˜!

get์œผ๋กœ ์กฐํšŒ ์‹œ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

id = 3 ์ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด ์˜ค๋ฅ˜ ๋ฐœ์ƒ

 

 

 

5. ์•„๋ž˜์™€ ๊ฐ™์ด subject ์— "์žฅ๊ณ "๋ผ๋Š” ๋ฌธ์ž์—ด์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•ด๋ณด๊ธฐ

subject__contains ์—์„œ '์–ธ๋”๋ฐ”( _ )' ๋Š” 1๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ 2๊ฐœ์ด๋‹ค.

+ subject__contains='์žฅ๊ณ ' --> "subject์— '์žฅ๊ณ '๋ผ๋Š” ๋ฌธ์ž์—ด์ด ์žˆ๋Š”๊ฐ€?"

 

 

 

 

# Question ์ˆ˜์ •

- id ๊ฐ’์ด 2์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ํ›„ subject ์†์„ฑ์„ ์•„๋ž˜์ฒ˜๋Ÿผ ์ˆ˜์ •

๋ฐ˜๋“œ์‹œ q.save() ๋ฅผ ํ•ด์•ผ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ €์žฅ๋จ

 

 

 

 

# Question ์‚ญ์ œ

- id ๊ฐ’์ด 1์ธ Question ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œ ํ›„ Question.objects.all() ๋กœ ์‚ญ์ œ ์—ฌ๋ถ€ ํ™•์ธ

์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์€ ์‚ญ์ œ๋˜๊ณ  ๋‘ ๋ฒˆ์งธ ์งˆ๋ฌธ๋งŒ ์กฐํšŒ๋จ

+ (1, { ' pybo.Question ' : 1 })  -->  Question ๋ชจ๋ธ์ด 1๊ฐœ ์‚ญ์ œ๋˜์—ˆ์Œ์„ ์˜๋ฏธ

 

 

 

 

# Answer ์ž‘์„ฑ ๋ฐ ์กฐํšŒ

1. id๊ฐ€ 2์ธ ์งˆ๋ฌธ์„ ์กฐํšŒํ•˜๊ณ  question ์†์„ฑ์— ๋Œ€์ž… --> ๋‹ต๋ณ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ์งˆ๋ฌธ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ

+ Answer ๋ชจ๋ธ๋„ Question ๋ชจ๋ธ์ฒ˜๋Ÿผ id ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋จ ( a.id ๊ฐ€ 1 )

 

 

 

2. Answer์˜ id๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๋‹ต๋ณ€ ์กฐํšŒํ•˜๊ธฐ

 

+ Answer ๊ฐ์ฒด์ธ a๋ฅผ ์ด์šฉํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ๋‹ต๋ณ€๊ณผ ๊ด€๋ จ๋œ ์งˆ๋ฌธ ์กฐํšŒ๋„ ๊ฐ€๋Šฅ (๋‹ต๋ณ€ ์ด์šฉํ•˜์—ฌ ์งˆ๋ฌธ ์ฐพ๊ธฐ)

 

 

 

 

# ์งˆ๋ฌธ ์ด์šฉํ•˜์—ฌ ๋‹ต๋ณ€ ์ฐพ๊ธฐ์™€ ์—ฐ๊ฒฐ๋ชจ๋ธ๋ช…_set

- q.answer_set ์„ ์‚ฌ์šฉํ•˜์—ฌ ์งˆ๋ฌธ์— ๊ด€๋ จ๋œ ๋‹ต๋ณ€์„ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ์Œ

: Question ๋ชจ๋ธ์—๋Š” answer_set ์†์„ฑ์ด ์—†์ง€๋งŒ, Answer ๋ชจ๋ธ์— Question ๋ชจ๋ธ์ด ForignKey ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ์—ญ๋ฐฉํ–ฅ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

- ์—ฐ๊ฒฐ๋ชจ๋ธ๋ช…_set ( ex. answer_set )

 

- Question ๋ชจ๋ธ์—๋Š” ์™œ answer_set ์†์„ฑ์ด ์—†์„๊นŒ?

: ์งˆ๋ฌธ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋‹ต๋ณ€์ด ๋‹ฌ๋ฆด ์ˆ˜๋Š” ์žˆ์œผ๋‚˜(q.answer_set ๊ฐ€๋Šฅ), ๋‹ต๋ณ€ ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ ์งˆ๋ฌธ์ด ๋‹ฌ๋ฆด ์ˆœ ์—†๊ธฐ ๋•Œ๋ฌธ(a.question_set ๋ถˆ๊ฐ€๋Šฅ).

 

 

 

 

# ์žฅ๊ณ  ์•ฑ migrate

1. ๋ช…๋ น ํ”„๋กฌํฌํŠธ์—์„œ python manage.py runserver ์„ ์‹คํ–‰ํ•œ๋‹ค.

+ 18๊ฐœ์˜ ๋ฏธ์ ์šฉ๋œ migration์ด ์žˆ๊ณ , admin, auth, contenttypes, sessions ์•ฑ๋“ค๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ ์ ์šฉ์„ ์œ„ํ•ด์„œ๋Š” python manage.py migrate ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•จ.

 

+ admin, auth, contenttypes, sessions ์•ฑ๋“ค์€ ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ค์น˜๋œ๋‹ค.

 

 

 

2. ์„ค์น˜๋˜์–ด์žˆ๋Š” ์•ฑ์€ ํŒŒ์ด์ฐธ์˜ config/settings.py  ํŒŒ์ผ์—์„œ ํ™•์ธ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ์•ฑ๋“ค๋งŒ migrate๊ฐ€ ํ•„์š”

 

+ admin, auth, contenttypes, sessions ๊ณผ๋Š” ๋‹ฌ๋ฆฌ messages, staticfiles ์•ฑ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋ฌด๊ด€ํ•˜์—ฌ 2๋ฒˆ์— ์ถœ๋ ฅ๋˜์ง€ ์•Š์Œ 

 

 

 

3. ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋ฅผ config/settings.py  ํŒŒ์ผ์—์„œ ํ™•์ธ

+ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ์€ BASE_DIR(=ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ) ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ‘ db.sqlite3 ํŒŒ์ผ์— ์ €์žฅ

+ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์€ django.db.backends.sqlite3 ๋ผ๊ณ  ์ •์˜

SQLite ๋ž€...?
๊ฐœ๋ฐœ์ด๋‚˜ ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ€๋ฒผ์šด ํŒŒ์ผ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

 

+ ๋‚ด ํ”„๋กœ์ ํŠธ์˜ BASE_DIR์€ C:\projects\mysite

 

 

 

4. ๋ช…๋ น ํ”„๋กฌํฌํŠธ์—์„œ python manage.py migrate  ๋ช…๋ น ์‹คํ–‰

migrate ์ˆ˜ํ–‰ ์‹œ admin, auth, contenttypes, sessions ์•ฑ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”๋“ค์ด ์ƒ์„ฑ๋จ

 

 

 

'โœ’๏ธ Python Programming > Frameworks' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

< django - 6 >  (0) 2022.07.30
< django - 5 >  (0) 2022.07.30
< django - 3 >  (0) 2022.07.28
< django - 2 >  (0) 2022.07.27
[Django] 1. ํŒŒ์ด์ฌ ๊ฐ€์ƒ ํ™˜๊ฒฝ & ์žฅ๊ณ  ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์ค€๋น„  (0) 2022.07.27