13 changed files with 169 additions and 319 deletions
@ -22,21 +22,13 @@ Aqui está uma ideia geral de como os modelos poderiam parecer com seus campos d |
|||||
|
|
||||
{* ../../docs_src/extra_models/tutorial001_py310.py hl[7,9,14,20,22,27:28,31:33,38:39] *} |
{* ../../docs_src/extra_models/tutorial001_py310.py hl[7,9,14,20,22,27:28,31:33,38:39] *} |
||||
|
|
||||
/// info | Informação |
### Sobre `**user_in.model_dump()` { #about-user-in-model-dump } |
||||
|
|
||||
No Pydantic v1 o método se chamava `.dict()`, ele foi descontinuado (mas ainda é suportado) no Pydantic v2 e renomeado para `.model_dump()`. |
#### O `.model_dump()` do Pydantic { #pydantics-model-dump } |
||||
|
|
||||
Os exemplos aqui usam `.dict()` por compatibilidade com o Pydantic v1, mas você deve usar `.model_dump()` se puder usar o Pydantic v2. |
|
||||
|
|
||||
/// |
|
||||
|
|
||||
### Sobre `**user_in.dict()` { #about-user-in-dict } |
|
||||
|
|
||||
#### O `.dict()` do Pydantic { #pydantics-dict } |
|
||||
|
|
||||
`user_in` é um modelo Pydantic da classe `UserIn`. |
`user_in` é um modelo Pydantic da classe `UserIn`. |
||||
|
|
||||
Os modelos Pydantic possuem um método `.dict()` que retorna um `dict` com os dados do modelo. |
Os modelos Pydantic possuem um método `.model_dump()` que retorna um `dict` com os dados do modelo. |
||||
|
|
||||
Então, se criarmos um objeto Pydantic `user_in` como: |
Então, se criarmos um objeto Pydantic `user_in` como: |
||||
|
|
||||
@ -47,7 +39,7 @@ user_in = UserIn(username="john", password="secret", email="[email protected] |
|||||
e depois chamarmos: |
e depois chamarmos: |
||||
|
|
||||
```Python |
```Python |
||||
user_dict = user_in.dict() |
user_dict = user_in.model_dump() |
||||
``` |
``` |
||||
|
|
||||
agora temos um `dict` com os dados na variável `user_dict` (é um `dict` em vez de um objeto de modelo Pydantic). |
agora temos um `dict` com os dados na variável `user_dict` (é um `dict` em vez de um objeto de modelo Pydantic). |
||||
@ -103,20 +95,20 @@ UserInDB( |
|||||
|
|
||||
#### Um modelo Pydantic a partir do conteúdo de outro { #a-pydantic-model-from-the-contents-of-another } |
#### Um modelo Pydantic a partir do conteúdo de outro { #a-pydantic-model-from-the-contents-of-another } |
||||
|
|
||||
Como no exemplo acima, obtivemos o `user_dict` a partir do `user_in.dict()`, este código: |
Como no exemplo acima, obtivemos o `user_dict` a partir do `user_in.model_dump()`, este código: |
||||
|
|
||||
```Python |
```Python |
||||
user_dict = user_in.dict() |
user_dict = user_in.model_dump() |
||||
UserInDB(**user_dict) |
UserInDB(**user_dict) |
||||
``` |
``` |
||||
|
|
||||
seria equivalente a: |
seria equivalente a: |
||||
|
|
||||
```Python |
```Python |
||||
UserInDB(**user_in.dict()) |
UserInDB(**user_in.model_dump()) |
||||
``` |
``` |
||||
|
|
||||
...porque `user_in.dict()` é um `dict`, e depois fazemos o Python "desembrulhá-lo" passando-o para `UserInDB` precedido por `**`. |
...porque `user_in.model_dump()` é um `dict`, e depois fazemos o Python "desembrulhá-lo" passando-o para `UserInDB` precedido por `**`. |
||||
|
|
||||
Então, obtemos um modelo Pydantic a partir dos dados em outro modelo Pydantic. |
Então, obtemos um modelo Pydantic a partir dos dados em outro modelo Pydantic. |
||||
|
|
||||
@ -125,7 +117,7 @@ Então, obtemos um modelo Pydantic a partir dos dados em outro modelo Pydantic. |
|||||
E, então, adicionando o argumento de palavra-chave extra `hashed_password=hashed_password`, como em: |
E, então, adicionando o argumento de palavra-chave extra `hashed_password=hashed_password`, como em: |
||||
|
|
||||
```Python |
```Python |
||||
UserInDB(**user_in.dict(), hashed_password=hashed_password) |
UserInDB(**user_in.model_dump(), hashed_password=hashed_password) |
||||
``` |
``` |
||||
|
|
||||
...acaba sendo como: |
...acaba sendo como: |
||||
@ -166,7 +158,7 @@ Dessa forma, podemos declarar apenas as diferenças entre os modelos (com `passw |
|||||
|
|
||||
## `Union` ou `anyOf` { #union-or-anyof } |
## `Union` ou `anyOf` { #union-or-anyof } |
||||
|
|
||||
Você pode declarar uma resposta como o `Union` de dois ou mais tipos, o que significa que a resposta seria qualquer um deles. |
Você pode declarar uma response como o `Union` de dois ou mais tipos, o que significa que a response seria qualquer um deles. |
||||
|
|
||||
Isso será definido no OpenAPI com `anyOf`. |
Isso será definido no OpenAPI com `anyOf`. |
||||
|
|
||||
@ -196,7 +188,7 @@ Mas se colocarmos isso na atribuição `response_model=PlaneItem | CarItem`, ter |
|||||
|
|
||||
## Lista de modelos { #list-of-models } |
## Lista de modelos { #list-of-models } |
||||
|
|
||||
Da mesma forma, você pode declarar respostas de listas de objetos. |
Da mesma forma, você pode declarar responses de listas de objetos. |
||||
|
|
||||
Para isso, use o padrão Python `typing.List` (ou simplesmente `list` no Python 3.9 e superior): |
Para isso, use o padrão Python `typing.List` (ou simplesmente `list` no Python 3.9 e superior): |
||||
|
|
||||
@ -204,7 +196,7 @@ Para isso, use o padrão Python `typing.List` (ou simplesmente `list` no Python |
|||||
|
|
||||
## Resposta com `dict` arbitrário { #response-with-arbitrary-dict } |
## Resposta com `dict` arbitrário { #response-with-arbitrary-dict } |
||||
|
|
||||
Você também pode declarar uma resposta usando um simples `dict` arbitrário, declarando apenas o tipo das chaves e valores, sem usar um modelo Pydantic. |
Você também pode declarar uma response usando um simples `dict` arbitrário, declarando apenas o tipo das chaves e valores, sem usar um modelo Pydantic. |
||||
|
|
||||
Isso é útil se você não souber os nomes de campo / atributo válidos (que seriam necessários para um modelo Pydantic) antecipadamente. |
Isso é útil se você não souber os nomes de campo / atributo válidos (que seriam necessários para um modelo Pydantic) antecipadamente. |
||||
|
|
||||
|
|||||
Loading…
Reference in new issue