РЕДАКТИРОВАТЬ: после того, как @ juanpa.arrivillaga правильно утверждал, что исходный вопрос не давал минимального воспроизводимого примера, я решил переписать его, добавив больше контекста: я использую FastAPI.
Я попытался переключить значение элемента, определив валидатор, который возвращал бы not
значения элемента:
from pydantic import BaseModel, Field, validator
class Foo(BaseModel):
key: str = Field(...)
condition: bool = Field(...)
@validator('condition')
def toogleCondition(cls, v):
return not v
Этот инструмент работает.
Однако при использовании модели в FastAPI это (видимо) не сработало.
from fastapi import FastAPI
from pydantic import BaseModel, Field, validator
# insert Foo definition here
app = FastAPI()
@app.get("/fail", response_model=Foo)
def fail():
return Foo(key='hola', condition=True)
@app.get("/success")
def success():
return Foo(key='hola', condition=True).dict()
Если вы запустите этот код, вы увидите, что /fail
переключает значение ДВА РАЗ, а /success
только ОДИН РАЗ.
Это потому, что response_model
СНОВА запускает проверку, которая включает ее еще раз.