# ๐Ÿ’ช - โ„น ## โ„น โŽ โฎ๏ธ `PUT` โ„น ๐Ÿฌ ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” `PUT` ๐Ÿ› ๏ธ. ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ `jsonable_encoder` ๐Ÿ—œ ๐Ÿ”ข ๐Ÿ’ฝ ๐Ÿ“Š ๐Ÿ‘ˆ ๐Ÿ’ช ๐Ÿช ๐ŸŽป (โœ… โฎ๏ธ โ˜ ๐Ÿ’ฝ). ๐Ÿ–ผ, ๐Ÿญ `datetime` `str`. {* ../../docs_src/body_updates/tutorial001.py hl[30:35] *} `PUT` โš™๏ธ ๐Ÿ“จ ๐Ÿ’ฝ ๐Ÿ‘ˆ ๐Ÿ”œ โŽ โ™ป ๐Ÿ’ฝ. ### โš  ๐Ÿ”ƒ โŽ ๐Ÿ‘ˆ โ›“ ๐Ÿ‘ˆ ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ’š โ„น ๐Ÿฌ `bar` โš™๏ธ `PUT` โฎ๏ธ ๐Ÿ’ช โš—: ```Python { "name": "Barz", "price": 3, "description": None, } ``` โ†ฉ๏ธ โšซ๏ธ ๐Ÿšซ ๐Ÿ”Œ โช ๐Ÿช ๐Ÿ”ข `"tax": 20.2`, ๐Ÿ”ข ๐Ÿท ๐Ÿ”œ โœŠ ๐Ÿ”ข ๐Ÿ’ฒ `"tax": 10.5`. & ๐Ÿ“Š ๐Ÿ”œ ๐Ÿ–Š โฎ๏ธ ๐Ÿ‘ˆ "๐Ÿ†•" `tax` `10.5`. ## ๐Ÿ• โ„น โฎ๏ธ `PATCH` ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” `PATCH` ๐Ÿ› ๏ธ *๐Ÿ•* โ„น ๐Ÿ’ฝ. ๐Ÿ‘‰ โ›“ ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ“จ ๐Ÿ•ด ๐Ÿ’ฝ ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿ’š โ„น, ๐Ÿ‚ ๐ŸŽ‚ ๐Ÿฃ. /// note `PATCH` ๐ŸŒ˜ ๐Ÿ›Ž โš™๏ธ & ๐Ÿ’ญ ๐ŸŒ˜ `PUT`. & ๐Ÿ“š ๐Ÿ‰ โš™๏ธ ๐Ÿ•ด `PUT`, ๐Ÿ• โ„น. ๐Ÿ‘† **๐Ÿ†“** โš™๏ธ ๐Ÿ‘ซ ๐Ÿ‘ ๐Ÿ‘† ๐Ÿ’š, **FastAPI** ๐Ÿšซ ๐Ÿšซ ๐Ÿ™† ๐Ÿšซ. โœ‹๏ธ ๐Ÿ‘‰ ๐Ÿฆฎ ๐ŸŽฆ ๐Ÿ‘†, ๐ŸŒ– โš–๏ธ ๐ŸŒ˜, โ” ๐Ÿ‘ซ ๐ŸŽฏ โš™๏ธ. /// ### โš™๏ธ Pydantic `exclude_unset` ๐Ÿ”ข ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ’š ๐Ÿ“จ ๐Ÿ• โ„น, โšซ๏ธ ๐Ÿ“ถ โš  โš™๏ธ ๐Ÿ”ข `exclude_unset` Pydantic ๐Ÿท `.dict()`. ๐Ÿ’– `item.dict(exclude_unset=True)`. ๐Ÿ‘ˆ ๐Ÿ”œ ๐Ÿ— `dict` โฎ๏ธ ๐Ÿ•ด ๐Ÿ’ฝ ๐Ÿ‘ˆ โš’ ๐Ÿ•โ” ๐Ÿ— `item` ๐Ÿท, ๐Ÿšซ ๐Ÿ”ข ๐Ÿ’ฒ. โคด๏ธ ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ‘‰ ๐Ÿ— `dict` โฎ๏ธ ๐Ÿ•ด ๐Ÿ’ฝ ๐Ÿ‘ˆ โš’ (๐Ÿ“จ ๐Ÿ“จ), ๐Ÿšซ ๐Ÿ”ข ๐Ÿ’ฒ: {* ../../docs_src/body_updates/tutorial002.py hl[34] *} ### โš™๏ธ Pydantic `update` ๐Ÿ”ข ๐Ÿ”œ, ๐Ÿ‘† ๐Ÿ’ช โœ ๐Ÿ“ โ™ป ๐Ÿท โš™๏ธ `.copy()`, & ๐Ÿšถโ€โ™€๏ธ `update` ๐Ÿ”ข โฎ๏ธ `dict` โš— ๐Ÿ’ฝ โ„น. ๐Ÿ’– `stored_item_model.copy(update=update_data)`: {* ../../docs_src/body_updates/tutorial002.py hl[35] *} ### ๐Ÿ• โ„น ๐ŸŒƒ ๐Ÿ“„, โœ” ๐Ÿ• โ„น ๐Ÿ‘† ๐Ÿ”œ: * (โš—) โš™๏ธ `PATCH` โ†ฉ๏ธ `PUT`. * ๐Ÿ—ƒ ๐Ÿช ๐Ÿ’ฝ. * ๐Ÿšฎ ๐Ÿ‘ˆ ๐Ÿ’ฝ Pydantic ๐Ÿท. * ๐Ÿ— `dict` ๐Ÿต ๐Ÿ”ข ๐Ÿ’ฒ โšช๏ธโžก๏ธ ๐Ÿ”ข ๐Ÿท (โš™๏ธ `exclude_unset`). * ๐Ÿ‘‰ ๐ŸŒŒ ๐Ÿ‘† ๐Ÿ’ช โ„น ๐Ÿ•ด ๐Ÿ’ฒ ๐Ÿค™ โš’ ๐Ÿ‘ฉโ€๐Ÿ’ป, โ†ฉ๏ธ ๐Ÿ” ๐Ÿ’ฒ โช ๐Ÿช โฎ๏ธ ๐Ÿ”ข ๐Ÿ’ฒ ๐Ÿ‘† ๐Ÿท. * โœ ๐Ÿ“ ๐Ÿช ๐Ÿท, ๐Ÿ› ๏ธ โšซ๏ธ ๐Ÿ”ข โฎ๏ธ ๐Ÿ“จ ๐Ÿ• โ„น (โš™๏ธ `update` ๐Ÿ”ข). * ๐Ÿ—œ ๐Ÿ“ ๐Ÿท ๐Ÿ•ณ ๐Ÿ‘ˆ ๐Ÿ’ช ๐Ÿช ๐Ÿ‘† ๐Ÿ’ฝ (๐Ÿ–ผ, โš™๏ธ `jsonable_encoder`). * ๐Ÿ‘‰ โญ โš™๏ธ ๐Ÿท `.dict()` ๐Ÿ‘ฉโ€๐Ÿ”ฌ ๐Ÿ”„, โœ‹๏ธ โšซ๏ธ โš’ ๐Ÿ’ญ (& ๐Ÿ—œ) ๐Ÿ’ฒ ๐Ÿ’ฝ ๐Ÿ†Ž ๐Ÿ‘ˆ ๐Ÿ’ช ๐Ÿ—œ ๐ŸŽป, ๐Ÿ–ผ, `datetime` `str`. * ๐Ÿ–Š ๐Ÿ’ฝ ๐Ÿ‘† ๐Ÿ’ฝ. * ๐Ÿ“จ โ„น ๐Ÿท. {* ../../docs_src/body_updates/tutorial002.py hl[30:37] *} /// tip ๐Ÿ‘† ๐Ÿ’ช ๐Ÿค™ โš™๏ธ ๐Ÿ‘‰ ๐ŸŽ โš’ โฎ๏ธ ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ” `PUT` ๐Ÿ› ๏ธ. โœ‹๏ธ ๐Ÿ–ผ ๐Ÿ“ฅ โš™๏ธ `PATCH` โ†ฉ๏ธ โšซ๏ธ โœ ๐Ÿ‘ซ โš™๏ธ ๐Ÿ’ผ. /// /// note ๐Ÿ‘€ ๐Ÿ‘ˆ ๐Ÿ”ข ๐Ÿท โœ”. , ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ’š ๐Ÿ“จ ๐Ÿ• โ„น ๐Ÿ‘ˆ ๐Ÿ’ช ๐Ÿšซ ๐ŸŒ ๐Ÿ”ข, ๐Ÿ‘† ๐Ÿ’ช โœ”๏ธ ๐Ÿท โฎ๏ธ ๐ŸŒ ๐Ÿ”ข โ„ข ๐Ÿ“ฆ (โฎ๏ธ ๐Ÿ”ข ๐Ÿ’ฒ โš–๏ธ `None`). ๐Ÿ”ฌ โšช๏ธโžก๏ธ ๐Ÿท โฎ๏ธ ๐ŸŒ ๐Ÿ“ฆ ๐Ÿ’ฒ **โ„น** & ๐Ÿท โฎ๏ธ โœ” ๐Ÿ’ฒ **๐Ÿ—**, ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿ’ญ ๐Ÿ”ฌ [โž• ๐Ÿท](extra-models.md){.internal-link target=_blank}. ///