Django-rest-framework: Create๋Š” TypeError๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํ›จ์”ฌ ๋” ์œ ์šฉํ•œ ์˜ˆ์™ธ๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2015๋…„ 10์›” 15์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: encode/django-rest-framework

์ด๊ฒƒ์€ ๋‚ด ์ธ์ƒ์˜ ๊ณจ์นซ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. Serializers.py์˜ 845ํ–‰ ์€ TypeError๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ํ›จ์”ฌ ๋” ๋„์›€์ด ๋˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์ง€์ • .save() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๊ณ  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด DRF๋Š” "X๋Š” ๋ฐ˜๋ณตํ•  ์ˆ˜ ์—†์Œ"๋งŒํผ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. DRF๊ฐ€ ์›๋ž˜ TypeError์˜ ์—ญ์ถ”์ ์„ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฑ‰์–ด๋‚ด๊ณ  ์›๋ž˜ ์˜ˆ์™ธ๋ฅผ ์‚ผํ‚ค๋Š” ๊ฒƒ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ์œ ์šฉํ•œ _์•„๋ฌด๊ฒƒ๋„_ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ DRF๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์žˆ์–ด ์ •๋ง ์ตœ์•…์˜ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์–ป๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.

๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•จ์œผ๋กœ์จ ๋„์›€์„ ์ฃผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์ง€๋งŒ ์‹ค์ œ๋กœ ๋‹น์‹ ์€ ๋””๋ฒ„๊ทธํ•˜๊ธฐ ํ›จ์”ฌ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ์ •๋ณด์˜ ๋Œ€๋ถ€๋ถ„์„ ๋ฒ„๋ฆฌ๋Š” ์ „์ฒด ์˜ˆ์™ธ๋ฅผ ์‚ผํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ MR์„ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š”.

๋ชจ๋“  3 ๋Œ“๊ธ€

pull ์š”์ฒญ์„ ๊ณ ๋ คํ•˜๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์—ฌ๊ธฐ์—์„œ ๋‹ค๋ฅด๊ฒŒ ํ•ด์•ผ ํ•  ์ผ์„ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์›๋ž˜ ์˜ˆ์™ธ ํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์ง€๋งŒ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ์—ญ์ถ”์ ์„ ๋ณด์กดํ•  ์ˆ˜ ์žˆ๋Š”์ง€(๋˜๋Š” ์›ํ•  ๊ฒƒ์ธ์ง€) ์ „ํ˜€ ๋ชจ๋ฆ…๋‹ˆ๋‹ค.

PR์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์‹œ์ง€์— ์›๋ณธ ํŠธ๋ ˆ์ด์Šค๋ฐฑ์„ ํ‘œ์‹œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ ์˜ˆ์™ธ๋ฅผ ์•„์˜ˆ ์žก์•„์„œ๋Š” ์•ˆ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ, ์ˆ˜์ •๋œ ๋ฉ”์‹œ์ง€๊ฐ€ ์‹ ๊ทœ์œ ์ €๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜์ง€ ์•Š์„๊นŒ ์‹ถ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ค‘์š”ํ•œ ์˜ค๋ฅ˜ ์ •๋ณด๋ฅผ ์•„๋ฌด ์ด์œ  ์—†์ด ์‚ผํ‚ค๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”,
์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‚ฌ์†Œํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ DRF๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์žˆ์–ด ์ •๋ง ์ตœ์•…์˜ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๋‚ด๊ฐ€ ์–ป๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค.

TypeError: Got a `TypeError` when calling `Document.objects.create()`. This may be because you have a writable field on the serializer class that is not a valid argument to `Document.objects.create()`. You may need to make the field read-only, or override the DocumentSerializer.create() method to handle this correctly.
Original exception text was: 'SafeText' object is not callable.

๋‚˜๋Š” ๋‹น์‹ ์ด ๊ทธ ํ…์ŠคํŠธ๋ฅผ ํ‘œ์‹œํ•จ์œผ๋กœ์จ ๋„์›€์„ ์ฃผ๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์ง€๋งŒ ์‹ค์ œ๋กœ ๋‹น์‹ ์€ ๋””๋ฒ„๊ทธํ•˜๊ธฐ ํ›จ์”ฌ ๋” ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ค์ œ๋กœ ์œ ์šฉํ•œ ์ •๋ณด์˜ ๋Œ€๋ถ€๋ถ„์„ ๋ฒ„๋ฆฌ๋Š” ์ „์ฒด ์˜ˆ์™ธ๋ฅผ ์‚ผํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ MR์„ ๊ณ ๋ คํ•ด์ฃผ์„ธ์š”.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰