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

โญ Personal_Study97

(M:N) Article - User Relationship M:N (Article-User) Like ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ(model ์ถ”๊ฐ€) ManyToManyField ์ž‘์„ฑ ๊ทธ๋Ÿฌ๋‚˜... โœ” Article๊ณผ User๊ฐ€ ์ด๋ฏธ (N:1) ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถฉ๋Œํ•˜๋Š” ํ˜„์ƒ ๋ฐœ์ƒ! โœ” user๊ฐ€ ์ž‘์„ฑํ•œ ๊ธ€๋“ค(user.article_set)๊ณผ user๊ฐ€ ์ข‹์•„์š”๋ฅผ ๋ˆ„๋ฅธ ๊ธ€๋“ค(user.article_set)์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†๋‹ค. related_name ์ž‘์„ฑ โœ” ์ผ๋ฐ˜์ ์œผ๋กœ N:1 ๊ด€๊ณ„๋Š” ์ž˜ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  M:N ๊ด€๊ณ„์— related_name์„ ์„ค์ •ํ•ด์ค€๋‹ค. User - Article ๊ฐ„ related manager ์ •๋ฆฌ article.user โœ” ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•œ ์œ ์ € - N:1 user.article_set โœ” ์œ ์ €๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€(์—ญ์ฐธ์กฐ) - N:1 article.like_use.. 2022. 10. 17.
M:N Relationship Many to many relationship M:N ๊ด€๊ณ„ โœ” Many-to-many relationships โœ” ํ•œ ํ…Œ์ด๋ธ”์˜ 0๊ฐœ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ 0๊ฐœ ์ด์ƒ์˜ ๋ ˆ์ฝ”๋“œ์™€ ๊ด€๋ จ๋œ ๊ฒฝ์šฐ โœ” ์–‘์ชฝ ๋ชจ๋‘์—์„œ N:1 ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๊ฐœ์š” โœ” ๋ณ‘์›์— ๋‚ด์›ํ•˜๋Š” ํ™˜์ž์™€ ์˜์‚ฌ์˜ ์˜ˆ์•ฝ ์‹œ์Šคํ…œ ๊ตฌ์ถ• โœ” ํ™˜์ž ์˜์‚ฌ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์šฉ์–ด ์ •๋ฆฌ โœ” Target model ๊ด€๊ณ„ ํ•„๋“œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์€ ๋ชจ๋ธ โœ” Source model ๊ด€๊ณ„ ํ•„๋“œ๋ฅผ ๊ฐ€์ง„ ๋ชจ๋ธ N:1 ๋ชจ๋ธ์˜ ํ•œ๊ณ„ โœ” ๋™์ผํ•œ ํ™˜์ž๊ฐ€ ๋‹ค๋ฅธ ์˜์‚ฌ์—๊ฒŒ ์˜ˆ์•ฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด์„œ ์˜ˆ์•ฝ์„ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. โœ” ์™ธ๋ž˜ ํ‚ค ์ปฌ๋Ÿผ์— '1, 2' ํ˜•ํƒœ๋กœ ์ฐธ์กฐํ•˜๊ธฐ ๋ถˆ๊ฐ€๋Šฅ ์ค‘๊ฐœ ๋ชจ๋ธ ์ž‘์„ฑ์„ ํ†ตํ•œ ํ•ด๊ฒฐ โœ” ํ™˜์ž์™€ ์˜์‚ฌ ๋‘˜๋‹ค์— ๋Œ€ํ•ด์„œ N:1 ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๋Š” ๋ณ„๋„์˜ ์˜ˆ์•ฝ.. 2022. 10. 16.
ํŒŒ์ด์ฌ 2์ฐจ์› ๋ฐฐ์—ด ์‰ฝ๊ฒŒ ํšŒ์ „ ์‹œํ‚ค๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€๋‹ค๋ณด๋ฉด ์ƒํ•˜์ขŒ์šฐ ์—ฌ๋Ÿฌ๋ฐฉํ–ฅ ํ˜น์€ ์—ด๋‹จ์œ„๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋Ÿด ๋•Œ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ž‘์—…ํ•˜๊ธฐ ํŽธํ•œ ํ•œ ๋ฐฉํ–ฅ(์ฃผ๋กœ ์ง๊ด€์ ์ด๋ฉฐ ์Šฌ๋ผ์ด์‹ฑ์„ ์ด์šฉํ•˜๊ธฐ ํŽธํ•œ ์ขŒ -> ์šฐ๋กœ ํ•œ๋‹ค)์— ๋Œ€ํ•ด์„œ๋งŒ ์ฝ”๋“œ ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฐฉํ–ฅ์€ ๋ฐฐ์—ด์„ ํšŒ์ „ ์‹œ์ผœ์„œ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ์งง์•„์ง€๊ณ  ๊น”๋”ํ•ด์ง€๋ฉฐ, ์—๋Ÿฌ๊ฐ€ ์ผ์–ด๋‚  ์ผ์ด ์ ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ๋ฐ˜๋Œ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์˜ˆ์™ธ ์ผ€์ด์Šค๋กœ ์ธํ•ด ์˜ค๋‹ต์ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋‹ˆ ์กฐ์‹ฌํ•ด์„œ ์ ์šฉํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ์›๋ž˜๋ฅผ ์ด์ค‘ for๋ฌธ์„ ๋„๋Š” ๋ฐฉ๋ฒ•์ด ์ •์„(?)์ด์ง€๋งŒ ์‹ค์ œ ๋ฌธ์ œ ํ’€ ๋•Œ ์“ฐ๊ธฐ ํŽธํ•˜๋ผ๊ณ  ๊ฐ ๋ฐฉํ–ฅ ๋ณ„๋กœ ํ•œ ์ค„์”ฉ ํ•จ์ˆ˜ ํ˜•ํƒœ๋กœ ์ž‘์„ฑํ–ˆ๋‹ค. ๋งŒ์•ฝ ํ•™์Šต์ด ๋ชฉ์ ์ด๋ผ๋ฉด for๋ฌธ์œผ๋กœ ๊ฐ ๋ฐฉํ–ฅ๋ณ„๋กœ + ์ „์น˜๋ฐฐ์—ด๊นŒ์ง€ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ๊ฒƒ ์ถ”์ฒœ!! N.. 2022. 10. 12.
Django์—์„œ css, js ๋“ฑ static(์ •์ ) ์š”์†Œ ๋“ฑ๋ก/๊ด€๋ฆฌํ•˜๊ธฐ Django์—์„œ css, ์ด๋ฏธ์ง€, js ๋“ฑ ์ •์ (static) ํŒŒ์ผ์ด๋‚˜ ์š”์†Œ๋“ค์„ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ• ๋ ค๋ฉด static ํด๋”๋ฅผ ๋ณ„๋„๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ๋“ฑ๋ก ํ•ด์ค˜์•ผ๋œ๋‹ค. 1. ํ”„๋กœ์ ํŠธ์˜ settings ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€์„œ ๊ฒฝ๋กœ๋ฅผ ๋“ฑ๋กํ•ด์ค€๋‹ค. STATICFILES_DIRS = [ BASE_DIR / 'static', ] 2. app ํด๋”์— static ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์ฃผ๊ณ  ์ •์  ์š”์†Œ๋ฅผ ๋‹ด์„ ํด๋”๋ฅผ ํ•˜์œ„ ํด๋”๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค. ๋ฐ”๋กœ static ํด๋”์— ๋„ฃ์–ด๋„ ์ƒ๊ด€ ์—†์œผ๋‚˜ ์ดํ›„ image๋‚˜ js ๋“ฑ ๋‹ค๋ฅธ ์š”์†Œ๋“ค๋„ ๊ฐ™์ด ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ณ„ ํด๋”๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒŒ ํŽธ๋ฆฌํ•˜๋‹ค. 3. html ํŒŒ์ผ์— static๊ณผ ์ ์šฉ์‹œํ‚ฌ css ํŒŒ์ผ์„ ๋“ฑ๋กํ•ด์ค€๋‹ค. 2022. 10. 12.
.gitignore ํ™œ์šฉํ•ด์„œ ์›์น˜ ์•Š๋Š” ํŒŒ์ผ ๊นƒ์—์„œ ์ œ์™ธ์‹œํ‚ค๊ธฐ ๊นƒ์œผ๋กœ ์ž‘์—…์ด๋‚˜ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€์ƒํ™˜๊ฒฝ(์‚ฌ์ง„์—์„œ์˜ venv)๋‚˜ ide ์„ค์ • ํŒŒ์ผ ๋“ฑ๊ณผ ๊ฐ™์ด ์›์น˜ ์•Š๋Š” ํŒŒ์ผ์ด ์ถ”์ , ์™ธ๋ถ€ ๋ ˆํฌ์ง€ํ† ๋ฆฌ(๊นƒํ—ˆ๋ธŒ ๋“ฑ)์— ์—…๋กœ๋“œ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ .gitignore ํŒŒ์ผ์„ ์ด์šฉํ•˜๋ฉด ์„ค์ •ํ•œ ํŒŒ์ผ์ด ๊นƒ์—๊ฒŒ ์ถ”์  ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.(๋ง ๊ทธ๋Œ€๋กœ ignore ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.) 1. ์ œ์™ธ์‹œํ‚ฌ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ์— .gitignore ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค. ์‚ฌ์ง„์—์„œ๋Š” ์ž‘์—…ํ•˜๋˜ vscode๋กœ ๋ฐ”๋กœ ์ƒ์„ฑํ–ˆ๋Š”๋ฐ ๋‹น์—ฐํžˆ ํ„ฐ๋ฏธ๋„์—์„œ ์ƒ์„ฑํ•ด๋„๋œ๋‹ค. 2. ์ œ์™ธ ์‹œํ‚ฌ ํŒŒ์ผ๋“ค์„ .gitignore ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. ์›๋ž˜๋Š” ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ ์ผ์ผ์ด ์ถ”๊ฐ€ํ•ด์ค˜์•ผ๋˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ๋˜‘๋˜‘ํ•œ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“  ํˆด์„ ์ด์šฉํ•˜๋„๋ก ํ•˜์ž https://www.toptal.com/developers/git.. 2022. 10. 11.
(N:1) Comment - User Relationship Django Relationship fields (N:1) (Comment - User) ๋ชจ๋ธ ๊ด€๊ณ„ ์„ค์ • โœ” models.py์— ์™ธ๋ž˜ ํ‚ค ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ  migrationsํ•ด์ฃผ๊ธฐ! Create 1. ์ด์ „๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ถˆํ•„์š”ํ•œ ์œ ์ € ์„ ํƒ์ฐฝ ์ถœ๋ ฅ 2. Form์—์„œ ์ถœ๋ ฅ ํ•„๋“œ ์ˆ˜์ • 3. ๋ˆ„๋ฝ๋œ ์™ธ๋ž˜ํ‚ค ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ Read Detail ํ…œํ”Œ๋ฆฟ์—์„œ ์ž‘์„ฑ์ž ์ถœ๋ ฅ๋˜๋„๋ก ๋ณ€๊ฒฝ Delete 1. ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ํ™•์ธํ•ด์„œ ๋ณธ์ธ ๋Œ“๊ธ€๋งŒ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ 2. ๋Œ“๊ธ€ ์ž‘์„ฑ์ž ์™ธ์— ๋Œ“๊ธ€ ์‚ญ์ œ ๋ฒ„ํŠผ ์ˆจ๊ธฐ๊ธฐ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์— ๋Œ€ํ•œ ์ ‘๊ทผ ์ œํ•œํ•˜๊ธฐ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์ธ ๊ฒฝ์šฐ๋งŒ ๋Œ“๊ธ€ ์ž‘์„ฑํ•˜๊ธฐ ์ธ์ฆ๋œ ์‚ฌ์šฉ์ž์ธ ๊ฒฝ์šฐ๋งŒ ๋Œ“๊ธ€ ์‚ญ์ œํ•˜๊ธฐ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ์ถ”๊ฐ€ํ•ด์ฃผ๊ธฐ โœ” ํ•œ๋ฒˆ์— ๋‹ค ์ถ”๊ฐ€ํ• ๋ ค๊ณ  ํ•˜์ง€๋ง๊ณ  ์ฒ˜์Œ์—” ๊ตฌ์กฐ๋ฅผ ์ƒ๊ฐํ•˜๋ฉด์„œ ํ•˜๋‚˜์”ฉ ์„ค๊ณ„ํ•˜๊ธฐ 2022. 10. 10.