๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โญ Personal_Study/Django

Django REST framework - N:1 Relation

by ํฌ์ŠคํŠธ์‰์ดํฌ 2022. 10. 27.

Django REST framework - N:1 Relation

GET

  1. CommentSerializer ์ƒ์„ฑ
    image

GET-List

  1. urls, views ์ž‘์„ฑ
    image
    image
  2. ์‘๋‹ต ํ™•์ธ
    image

GET-Detail

  1. urls, views ์ž‘์„ฑ
    image
    image
  2. ์‘๋‹ต ํ™•์ธ
    image

POST

  1. urls, views ์ž‘์„ฑ
    image
    image

.save()์˜ ์ธ์ž๊ฐ’

โœ” save() ๋ฉ”์„œ๋“œ๋Š” ํŠน์ • Serializer ์ธ์Šคํ„ด์Šค๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
โœ” CommentSerializer๋ฅผ ํ†ตํ•ด serialize๋˜๋Š” ๊ณผ์ •์—์„œ ์ธ์ž๋กœ ๋„˜์–ด์˜จ aricle_pk์— ํ•ด๋‹นํ•˜๋Š” article ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋กœ ๋„˜๊ฒจ์„œ ์ €์žฅ
โœ” ์ด์ „์˜ ModelForm์˜ commit=False์™€ ์œ ์‚ฌ

  1. ์‘๋‹ต ํ™•์ธ, ๊ทธ๋Ÿฌ๋‚˜...
    image
    โœ” ์—๋Ÿฌ ๋ฐœ์ƒ

์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ ์„ค์ •

โœ” read_only_fields๋ฅผ ์‚ฌ์šฉํ•ด ์™ธ๋ž˜ ํ‚ค ํ•„๋“œ๋ฅผ '์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ'๋กœ ์„ค์ •
โœ” ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์‹œ์ ์— 'ํ•ด๋‹น ํ•„๋“œ๋ฅผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์—์„œ ์ œ์™ธ์‹œํ‚ค๊ณ  ๋ฐ์ดํ„ฐ ์กฐํšŒ ์‹œ์— ์ถœ๋ ฅ'ํ•˜๋„๋ก ํ•œ๋‹ค.

image
  1. ๋‹ค์‹œ ์‘๋‹ต ํ™•์ธํ•ด๋ณด๊ธฐ
    image

DELETE & PUT

  1. view ํ•จ์ˆ˜ ์ž‘์„ฑ
    image
  2. delete ์‘๋‹ต ํ™•์ธ
    image
  3. put ์‘๋‹ต ํ™•์ธ
    image

N:1 ์—ญ์ฐธ์กฐ ๋ฐ์ดํ„ฐ ์กฐํšŒ

  1. ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ์ž‘์„ฑ๋œ ๋Œ“๊ธ€ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ
    • ๊ธฐ์กด ํ•„๋“œ override
  2. ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ์ž‘์„ฑ๋œ ๋Œ“๊ธ€์˜ ๊ฐœ์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐ
    • ์ƒˆ๋กœ์šด ํ•„๋“œ ์ถ”๊ฐ€

ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ์ž‘์„ฑ๋œ ๋Œ“๊ธ€ ๋ชฉ๋ก ์ถœ๋ ฅํ•˜๊ธฐ

  1. PrimaryKeyRelatedField()
    image
    image
  2. Nested relationships(์ƒˆ๋กœ์šด ํ•„๋“œ ์ƒ์„ฑ)
    image
    image
    โœ” comment์˜ ์ƒ์„ธํ•œ ๋‚ด์šฉ๊นŒ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ • ๊ฒŒ์‹œ๊ธ€์— ์ž‘์„ฑ๋œ ๋Œ“๊ธ€์˜ ๊ฐœ์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐ

  1. ์ƒˆ๋กœ์šด ํ•„๋“œ ์ถ”๊ฐ€ Article Detail
    image
  2. ์‘๋‹ต ํ™•์ธ
    image

[์ฃผ์˜] ์ฝ๊ธฐ ์ „์šฉ ํ•„๋“œ ์ง€์ •

โœ” ํŠน์ • ํ•„๋“œ๋ฅผ override ํ˜น์€ ์ถ”๊ฐ€ํ•œ ๊ฒฝ์šฐ read_only_fields๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

image

Django shortcuts functions

get_object_or_404()

image


โœ” managers objects์—์„œ get()์„ ํ˜ธ์ถœํ•˜์ง€๋งŒ, ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์—†์„ ๋•Œ HTTP404๋ฅผ ์ผ์œผํ‚จ๋‹ค.

get_list_or_404()

image


โœ” managers objects์—์„œ filter()์„ ํ˜ธ์ถœํ•˜์ง€๋งŒ, ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์—†์„ ๋•Œ HTTP404๋ฅผ ์ผ์œผํ‚จ๋‹ค.

์™œ ์‚ฌ์šฉํ•ด์•ผ ๋ ๊นŒ?

โœ” ํด๋ผ์ด์–ธํŠธ ์ž…์žฅ์—์„œ '์„œ๋ฒ„์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋‹ค(500)'๋ผ๋Š” ์›์ธ์ด ์ •ํ™•ํ•˜์ง€ ์•Š์€ ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ•˜๊ธฐ๋ณด๋‹ค๋Š”, ์„œ๋ฒ„๊ฐ€ ์ ์ ˆํ•œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์˜ฌ๋ฐ”๋ฅธ ์—๋Ÿฌ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ ๋˜ํ•œ ์ค‘์š”!

 

'โญ Personal_Study > Django' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

DynamicFieldsModelSerializer  (0) 2022.11.06
Django REST framework - Single Model  (0) 2022.10.26
Django: Response JSON  (0) 2022.10.25
(M:N) User- User Relationship  (0) 2022.10.18
(M:N) Article - User Relationship  (0) 2022.10.17

๋Œ“๊ธ€