๐Ÿฆ๋ฉ‹์Ÿ์ด ์‚ฌ์ž์ฒ˜๋Ÿผ 11๊ธฐ/Do it! ์ ํ”„ ํˆฌ ์žฅ๊ณ 

02-2 ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋ธ

1son 2023. 3. 23. 15:06

์žฅ๊ณ ๋Š” ๋ชจ๋ธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. 

์ด๋Š” ์–ด๋–ค ์ด์ ์ด ์žˆ์„๊นŒ?

 

๋ณดํ†ต ์›น๊ฐœ๋ฐœ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ/์กฐํšŒ๋ฅผ ์œ„ํ•ด SQL ์ฟผ๋ฆฌ๋ฌธ์„ ์ด์šฉํ•œ๋‹ค. 

-> ๋ณ„๋„์˜ SQL์ฟผ๋ฆฌ๋ฌธ์„ ๋ฐฐ์›Œ์•ผ ํ•œ๋‹ค๋Š” ๋ง๊ณผ ๊ฐ™๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด SQL์ฟผ๋ฆฌ๋ฌธ์„ ๋ชฐ๋ผ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ/์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋ชจ๋ธ์ด ๋ฌด์—‡์ด๊ธธ๋ž˜..ใ„ทใ„ท

์˜ค๋Š˜ ์‹ค์Šต์„ ํ†ตํ•ด ์•Œ์•„๋ณด์ž!

 

 

migrate์™€ ํ…Œ์ด๋ธ” ์•Œ์•„๋ณด๊ธฐ

01 ์žฅ๊ณ  ๊ฐœ๋ฐœ ์„œ๋ฒ„ ๊ตฌ๋™ ์‹œ ๋‚˜์˜ค๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ์‚ดํŽด๋ณด๊ธฐ 

์•„์ง ์ ์šฉ๋˜์ง€ ์•Š์€ 18๊ฐœ์˜ migration์ด ์žˆ์Œ!

 

migration์ด ๋ฌด์—‡์ธ์ง€ ์•„์ง ๋ชจ๋ฅด์ง€๋งŒ, ์ด ์˜ค๋ฅ˜๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด

python manage.py migrate๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์•ˆ๋‚ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

02 config/settings.py ์—ด์–ด ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜๋œ ์•ฑ ํ™•์ธํ•˜๊ธฐ 

 

๊ทธ๋Ÿฌ๋ฉด ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€์— ํ‘œ์‹œ๋œ ์•ฑ์€ ์–ด๋””์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , 

์™œ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€์— ์–ธ๊ธ‰๋˜์—ˆ์„๊นŒ?

INTALLED_APPS๋Š” ํ˜„์žฌ ์žฅ๊ณ  ํ”„๋กœ์ ํŠธ์— ์„ค์น˜๋œ ์•ฑ์ด๋‹ค. 

 

์šฐ๋ฆฌ๋Š” ์ง€๊ธˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ ๋ณด๊ณ  ์žˆ๋‹ค!

 

03 config/settings.py์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๋ณด ์‚ดํŽด๋ณด๊ธฐ 

์—ฌ๊ธฐ์—๋Š” ์„ค์น˜๋œ ์•ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋„ ์ •์˜๋˜์–ด ์žˆ๋‹ค. 

 

 

04 migrate ๋ช…๋ น์œผ๋กœ ์•ฑ์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ 

migrate ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€์— ์žˆ๋˜ ์•ฑ๋“ค์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ…Œ์ด๋ธ”๋“ค์„ ์ƒ์„ฑํ•˜์ž. 

๋ฉ”์‹œ์ง€์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜์ž๋ฉด migrate๋ฅผ ํ†ตํ•ด, admin, auth, contenttypes,... ์•ฑ์ด ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋œ๋‹ค. 

 

 

 

05 DB Browser for SQLite๋กœ ํ…Œ์ด๋ธ” ์‚ดํŽด๋ณด๊ธฐ 

ํ…Œ์ด๋ธ”์˜ ์ •์ฒด๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด migrate ๋ช…๋ น์„ ํ†ตํ•ด ์–ด๋–ค ํ…Œ์ด๋ธ”์ด ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ์ž ๊น ํ™•์ธํ•ด๋ณด์ž. 

 

06 DB Browser for SQLite ์‚ดํŽด๋ณด๊ธฐ 

-> ์žฅ๊ณ ์˜ ORM์€ ์ฟผ๋ฆฌ๋ฌธ์„ ๋ชฐ๋ผ๋„ ๋ฐ์ดํ„ฐ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

-> ORM์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ๋ฐฉ์‹์˜ ๋‹จ์  3๊ฐ€์ง€๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

 


 

๋ชจ๋ธ ๋งŒ๋“ค๊ธฐ 

 

์ด์ œ ํŒŒ์ด๋ณด์—์„œ ์‚ฌ์šฉํ•  ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด ๋ณด์ž. ํŒŒ์ด๋ณด๋Š” ์งˆ๋ฌธ ๋‹ต๋ณ€ ๊ฒŒ์‹œํŒ์ด๋ฏ€๋กœ

์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋ธ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. 

 

01 ๋ชจ๋ธ ์†์„ฑ ๊ตฌ์ƒํ•˜๊ธฐ 

02 pybo/models.py์— ์งˆ๋ฌธ ๋ชจ๋ธ ์ž‘์„ฑํ•˜๊ธฐ

์งˆ๋ฌธ ๋ชจ๋ธ์„ pybo/models.py์— ์ž‘์„ฑํ•ด ๋ณด์ž. ์งˆ๋ฌธ ๋ชจ๋ธ์€ Question ํด๋ž˜์Šค๋กœ ๋งŒ๋“ ๋‹ค. 

์•ž์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ๋ชจ๋ธ์€ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ค ๊ฒƒ์ด๋ฉฐ, 

 

Answer ๋ชจ๋ธ์€ ์–ด๋–ค ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ด๋ฏ€๋กœ Question ๋ชจ๋ธ์„ ์†์„ฑ์œผ๋กœ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•œ๋‹ค.

์ด์ฒ˜๋Ÿผ ์–ด๋–ค ๋ชจ๋ธ์ด ๋‹ค๋ฅธ ๋ชจ๋ธ์„ ์†์„ฑ์œผ๋กœ ๊ฐ€์ง€๋ฉด ForeignKey๋ฅผ ์ด์šฉํ•œ๋‹ค. 

 

 04 config/settings.py๋ฅผ ์—ด์–ด pybo์•ฑ ๋“ฑ๋กํ•˜๊ธฐ 

1~3๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜์ž. 

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

 

 

 

05 

์—ฌ๊ธฐ์„œ ๊ผญ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•  ์ ์€ ์ด ํŒŒ์ผ์— ์ •์˜๋œ PyboConfig ํด๋ž˜์Šค๊ฐ€ config/settings.py ํŒŒ์ผ์˜ INSTALLED_APPS ํ•ญ๋ชฉ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์œผ๋ฉด ์žฅ๊ณ ๋Š” pybo ์•ฑ์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์ž‘์—…๋„ ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์‚ฌ์‹ค์ด๋‹ค. 

 

 

 

06 migrate๋กœ ํ…Œ์ด๋ธ” ์ƒ์„ฑํ•˜๊ธฐ 

 

 

07 makemigrations๋กœ ํ…Œ์ด๋ธ” ์ž‘์—… ํŒŒ์ผ ์ƒ์„ฑํ•˜๊ธฐ 

migrate ๋ช…๋ น์ด ์ œ๋Œ€๋กœ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด migrate ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ…Œ์ด๋ธ” ์ž‘์—… ํŒŒ์ผ์ด ํ•„์š”ํ•˜๊ณ , ํ…Œ์ด๋ธ” ์ž‘์—… ํŒŒ์ผ์„ ๋งŒ๋“ค๋ ค๋ฉด makemigrations ๋ช…๋ น์„ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

makemigrations ๋ช…๋ น์€ ์žฅ๊ณ ๊ฐ€ ํ…Œ์ด๋ธ” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ํŒŒ์ผ๋“ค์„ ์ƒ์„ฑํ•œ๋‹ค. 

๋งŽ์€ ํ•™์Šต์ž๊ฐ€ makemigrations ๋ช…๋ น์„ ์‹ค์ œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ช…๋ น์œผ๋กœ ์˜คํ•ดํ•œ๋‹ค. 

ํ•˜์ง€๋งŒ ์‹ค์ œ ํ…Œ์ด๋ธ” ์ƒ์„ฑ ๋ช…๋ น์€ migrate์ด๋‹ค. 

 

 

08 makemigrations๋กœ ์ƒ์„ฑ๋œ ํŒŒ์ผ ์œ„์น˜ ์‚ดํŽด๋ณด๊ธฐ 

ํŒŒ์ผ์ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๋‹ค. 

 

 

09 makemigrations ํ•œ ๋ฒˆ ๋” ์‹คํ–‰ํ•ด ๋ณด๊ธฐ

-> no changes detected๋ผ๋Š” ๋ฉ”์‹œ์ง€๋งŒ ๋œฌ๋‹ค. 

-> ๋ชจ๋ธ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—†๋‹ค๋ฉด '๋ชจ๋ธ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์—†์Œ'์ด๋ผ๊ณ  ์•Œ๋ ค ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

 

 

10 migrate ์‹คํ–‰ํ•˜๊ธฐ 

์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์žฅ๊ณ ๋Š” ๋“ฑ๋ก๋œ ์•ฑ์— ์žˆ๋Š” ๋ชจ๋ธ์„ ์ฐธ์กฐํ•˜์—ฌ ์‹ค์ œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค. 

 

11 

์‹ค์ œ๋กœ ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค.

Question ๋ชจ๋ธ์€ pybo_question์œผ๋กœ, Answer ๋ชจ๋ธ์€ pybo_answer๋กœ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด ์ง€์–ด์กŒ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

๊ทธ์ € ์šฐ๋ฆฌ๋Š” Question, Answer ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

 


 

 

๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ณ  ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•˜๊ธฐ 

์ง€๊ธˆ๊นŒ์ง€ ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ ์‹ค์ œ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์žฅ๊ณ ์—์„œ๋Š” ๋ชจ๋ธ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ• ๊นŒ?

์žฅ๊ณ  ์…ธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ธ ์‚ฌ์šฉ๋ฒ•์„ ์‰ฝ๊ฒŒ ์ตํž ์ˆ˜ ์žˆ๋‹ค. !

 

 

01 ์žฅ๊ณ  ์…ธ ์‹คํ–‰ํ•˜๊ธฐ 

๋‹ค์Œ์„ ์ž…๋ ฅํ•˜์—ฌ ์žฅ๊ณ  ์…ธ์„ ์‹คํ–‰ํ•˜์ž.

 

02 Question, Answer ๋ชจ๋ธ ์ž„ํฌํŠธํ•˜๊ธฐ 

์žฅ๊ณ  ์…ธ์„ ์‹คํ–‰ํ–ˆ์œผ๋ฉด, ๋‹ค์Œ ๋ช…๋ น์œผ๋กœ Question๊ณผ Answer ๋ชจ๋ธ์„ ์žฅ๊ณ  ์…ธ์— ์ž„ํฌํŠธํ•˜์ž. 

 

 

03 Question ๋ชจ๋ธ๋กœ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ 

Question ๋ชจ๋ธ์„ ์ด์šฉํ•˜์—ฌ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด๋ณด์ž. 

Question ๋ชจ๋ธ์˜ subject ์†์„ฑ์— ์ œ๋ชฉ์„, content ์†์„ฑ์— ๋ฌธ์ž์—ด๋กœ ์งˆ๋ฌธ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•œ๋‹ค. 

 

์ด ๊ณผ์ •์„ ํ†ตํ•ด ๊ฐ์ฒด q๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. 

๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋œ ๋‹ค์Œ q.save()๋ฅผ ์ž…๋ ฅํ•˜๋ฉด Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ 1๊ฑด์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ๋‹ค. 

 

 

04 Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ์˜ id๊ฐ’ ํ™•์ธํ•˜๊ธฐ 

Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž˜ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž. 

์žฅ๊ณ ๋Š” ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ์‹œ ๋ฐ์ดํ„ฐ์— id๊ฐ’์„ ์ž๋™์œผ๋กœ ๋„ฃ์–ด์ค€๋‹ค. 

 

id๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ ์ผํ•œ ๊ฐ’์ด๋ฉฐ, ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค. 

id๊ฐ’์€ ์—ฌ๋Ÿฌ๋ถ„์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค 1์”ฉ ์ฆ๊ฐ€ํ•œ ๊ฐ’์œผ๋กœ ์ž๋™์œผ๋กœ ์ž…๋ ฅ๋  ๊ฒƒ์ด๋‹ค. 

 

 

 

05 Question ๋ชจ๋ธ๋กœ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ 1๊ฐœ ๋” ๋งŒ๋“ค๊ธฐ 

๋‘๋ฒˆ์งธ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ์ €์žฅํ•ด๋ณด์ž.

id๋Š” ์˜ˆ์ƒ๋Œ€๋กœ 2์ด๋‹ค. 

 

 

06 Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ์กฐํšŒํ•˜๊ธฐ 

์ด๋ฒˆ์—๋Š” ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด๋ณด์ž. 

 

๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด QuerySet ๊ฐ์ฒด๊ฐ€ ๋ฐ˜ํ™˜๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

QuerySet์—๋Š” 2๊ฐœ์˜ Question ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. 

 

 

 

07 Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๊ฒฐ๊ณผ์— ์†์„ฑ๊ฐ’ ๋ณด์—ฌ์ฃผ๊ธฐ 

6๋‹จ๊ณ„์˜ ๊ฒฐ๊ณผ๋Š” ์‚ฌ๋žŒ์ด ๋ณด๊ธฐ ๋ถˆํŽธํ•˜๋‹ค. 

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

 

 

์ด๋ ‡๊ฒŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ id๊ฐ€ ์•„๋‹Œ ์ œ๋ชฉ์„ ํ‘œ์‹œํ•ด์ค€๋‹ค. 

 

 

08 Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๋‹ค์‹œ ์กฐํšŒํ•ด ๋ณด๊ธฐ 

๋ชจ๋ธ์ด ์ˆ˜์ •๋˜์—ˆ์œผ๋ฏ€๋กœ ์žฅ๊ณ  ์…ธ์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ž. 

์žฅ๊ณ  ์…ธ์—์„œ quit() ๋ช…๋ น์„ ์‹คํ–‰ํ•ด ์ข…๋ฃŒํ•œ ํ›„ ๋‹ค์‹œ ์žฅ๊ณ  ์…ธ์„ ์‹œ์ž‘ํ•œ๋‹ค. 

 

 

-> makemigrations, migrate ๋ช…๋ น์€ ๋ชจ๋ธ์˜ ์†์„ฑ์ด ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ์— ์‹คํ–‰ํ•ด์•ผํ•˜๋Š” ๋ช…๋ น์ด๋‹ค. ์ง€๊ธˆ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์ด๋ฏ€๋กœ ์ด ๊ณผ์ •์€ ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค. 

 

 

09 ์กฐ๊ฑด์œผ๋กœ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ 

์กฐ๊ฑด์„ ์ฃผ์–ด Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด filter ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

์—ฌ๊ธฐ์„œ๋Š” QuerySet ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋˜์—ˆ๋Š”๋ฐ, 

1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด filter ํ•จ์ˆ˜ ๋Œ€์‹  getํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

 

 

 

10 Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋งŒ ์กฐํšŒํ•˜๊ธฐ 

getํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋งŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋ฐ˜ํ™˜๊ฐ’์„ ๋ณด๋ฉด Question์ด๋‹ค. 

-> filter๋Š” ์—ฌ๋Ÿฌ๊ฑด์˜ ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜

 

 

 

 

11 get์œผ๋กœ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ 

-> ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€ 

 

12 filter๋กœ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ 

-> filter๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๊ทธ์ € ๋นˆ QuerySet์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 

 

 

13 ์ œ๋ชฉ์˜ ์ผ๋ถ€๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์กฐํšŒํ•˜๊ธฐ 

 

์žฅ๊ณ ๋Š” ์™ธ์›Œ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ์žฅ๊ณ  ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ž์ฃผ ์ฐธ๊ณ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. 

https://docs.djangoproject.com/en/3.0/topics/db/queries/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

Do it! ์‹ค์Šต

๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ 

: ์ด๋ฒˆ์—๋Š” ์ง€๊ธˆ๊นŒ์ง€ ์ €์žฅํ–ˆ๋˜ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜์ž.

 

01 Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ์ˆ˜์ •ํ•˜๊ธฐ 

๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์šฐ์„  ์ˆ˜์ •ํ•  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ด์•ผํ•œ๋‹ค. 

id๊ฐ€ 2์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•œ๋‹ค. 

 

02 subject ์†์„ฑ ์ˆ˜์ •ํ•˜๊ธฐ 

03 ์ˆ˜์ •ํ•œ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ธฐ 

: ๋ฐ˜๋“œ์‹œ save ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด์•ผ ๋ณ€๊ฒฝ๋œ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋œ๋‹ค. 

 

 

 

Do it! ์‹ค์Šต

๋ฐ์ดํ„ฐ ์‚ญ์ œํ•˜๊ธฐ 

 

 

Do it! ์‹ค์Šต

์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ ์•Œ์•„๋ณด๊ธฐ  

 

 

์•ž์—์„œ Answer ๋ชจ๋ธ์„ ๋งŒ๋“ค๋•Œ ForeignKey๋กœ Question ๋ชจ๋ธ๊ณผ ์—ฐ๊ฒฐํ•œ ๋‚ด์šฉ์ด ๊ธฐ์–ต๋‚  ๊ฒƒ์ด๋‹ค.

Answer ๋ชจ๋ธ์€ Question ๋ชจ๋ธ๊ณผ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค ๋•Œ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•˜๋‹ค .

 

01 Answer ๋ชจ๋ธ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ธฐ 

id ๊ฐ€ 2์ธ Question ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์€ ๋‹ค์Œ, ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ Answer ๋ชจ๋ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž. 

 

 

02 id ํ™•์ธํ•˜๊ธฐ 

 

Answer ๋ชจ๋ธ ๊ฐ์ฒด์ธ a์—๋Š” question ์†์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ a๋ฅผ ํ†ตํ•ด ์งˆ๋ฌธ์„ ์ฐพ๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‰ฝ๋‹ค. 

๊ทธ๋ ‡๋‹ค๋ฉด ๋ฐ˜๋Œ€๋กœ ์งˆ๋ฌธ์„ ํ†ตํ•ด ๋‹ต๋ณ€์„ ์ฐพ์„ ์ˆ˜ ์žˆ์„๊นŒ?

Question ๋ชจ๋ธ์—๋Š” ๋‹ต๋ณ€ ์†์„ฑ์ด ์—†์–ด์„œ ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

 

05

 

์ด๋ ‡๊ฒŒ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด, ์—ฐ๊ฒฐ๋ชจ๋ธ๋ช…_set๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. 

์—ฐ๊ฒฐ๋ชจ๋ธ๋ช…_set์€ ์ž์ฃผ ์‚ฌ์šฉํ•  ๊ธฐ๋Šฅ์ด๋‹ˆ ๊ผญ ๊ธฐ์–ตํ•˜์ž.