DRF

์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

[1] ModelSerializer ๊ฐœ๋…

django rest framework์˜ ModelSerializer ์— ๋Œ€ํ•ด ๋จผ์ € ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

ModelSerializer์€ ๋ชจ๋ธ์„ JSON์œผ๋กœ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Account๋ผ๋Š” ๋ชจ๋ธ์ด ์žˆ๋‹ค๊ณ  ํ• ๋•Œ AccountSerializer๋ฅผ ๋งŒ๋“ค์–ด์„œ

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ชจ๋ธ์˜ ํ•„๋“œ๋“ค๋งŒ json์œผ๋กœ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ์–ด์š”

img

๋ชจ๋ธ์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ๋‹ค json์œผ๋กœ ๋งŒ๋“ค์–ด์ค„ ๊ฑฐ๋ผ๋ฉด all ์„ ํ•ด์ค„ ์ˆ˜ ๋„ ์žˆ๊ณ 

img

ํŠน์ • ํ•„๋“œ๋งŒ ์ œ์™ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด exclude ํ•ด์ค„ ์ˆ˜ ๋„ ์žˆ๋‹ต๋‹ˆ๋‹ค.

img

๊ทธ๋ฆฌ๊ณ  nested json์„ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋ฉด depth ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

img

[3] ๋ชจ๋ธ Serializer ๋งŒ๋“ค๊ธฐ

๊ทธ ๋‹ค์Œ question์•ฑ์— serializers.py ๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”

๊ทธ๋ฆฌ๊ณ  Question๋ชจ๋ธ์— ๋Œ€ํ•œ Serializer๋ฅผ ๋งŒ๋“ค์–ด์ค๋‹ˆ๋‹ค.

Question๋ชจ๋ธ์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ json์œผ๋กœ ๋งŒ๋“ค๊ฒ ์Šต๋‹ˆ๋‹ค. (์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์œ„์—์„œ ๋งํ•œ id๋„ ๊ฐ™์ด json์— ๋‚˜์˜ต๋‹ˆ๋‹ค)

img

[4] ํŒŒ์ด์ฌ ์‰˜์—์„œ JSON ์ถœ๋ ฅํ•ด๋ณด๊ธฐ

์ผ๋‹จ ํŒŒ์ด์ฌ ์‰˜์„ ์‹คํ–‰์‹œ์ผœ์ฃผ์„ธ์š”

 python manage.py shell

์‰˜์— ์•„๊นŒ ๋งŒ๋“  ์‹œ๋ฆฌ์–ผ๋ผ์ด์ €๋ž‘ ๋ชจ๋ธ์„ import ํ•ด์ค๋‹ˆ๋‹ค.

from question.serializers import QuestionSerializer
from question.models import Question

์ด๋ ‡๊ฒŒ serializer๋ฅผ ๋งŒ๋“ค๊ณ  data๋ฅผ ์ถœ๋ ฅํ•ด๋ณด๋ฉด..!!

question = Question(title="์•ˆ๋…•ํ•˜์„ธ์š” ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค")
serializer = QuestionSerializer(question)
serializer.data

json์ด ์ž˜ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

img

(๋ชจ๋ธ์ด DB์— ์ €์žฅ์ด ์•ˆ๋˜์–ด์„œ id๊ฐ€ None์œผ๋กœ ๋‚˜์˜ค๋Š” ๊ฒƒ ๊ฐ™์•„์š”)

control+D ๋˜๋Š” quit()์„ ์ž…๋ ฅํ•ด์„œ ํŒŒ์ด์ฌ ์‰˜์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

[์ถ”๊ฐ€] - id๋ฅผ ์•ˆ๋‚˜์˜ค๊ฒŒ ํ•ด์ฃผ๋ ค๋ฉด

๋งŒ์•ฝ id๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒŒ ์‹ซ๋‹ค๋ฉด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ ํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒ ์Šต๋‹ˆ๋‹ค.

img

img

img

[์ถ”๊ฐ€] - ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ json์„ ๋‚ด๋ ค์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด

img

์›๋ณธ: https://eunjin3786.tistory.com/237?category=891871

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ