Tengo un modelo pydantic para solicitar como a continuación,
from pydantic import BaseModel, Field from typing import List, ClassVar from fastapi import FastAPI app = FastAPI() class myRequestModel(BaseModel): items: List[str] = Field(..., example=['a','b']) n: int = Field(100, example=50, gt=0) @app.post("/test") def test_func(args: myRequestModel): dynamic_threshold = my_func(...) # let say dynamic_threshold is determined at runtime if args.n < dynamic_threshold: args.n = 100 # I want to assign args.n only when it is under dynamic_threshold Cuando los usuarios no dan n , se establece automáticamente en 100, que es el valor predeterminado a través del atributo Field .
Si los usuarios dan n menos que dynamic_threshold , debe establecerse en el valor predeterminado.
Para lograr esto, traté de agregar _default_n usando typing.ClassVar . Vea abajo,
class myRequestModel(BaseModel): _default_n: ClassVar[int] = 100 n: int = Field(_default_n, example=100, gt=0) ... class Config: underscore_attrs_are_private = True @app.post("/test") def test_func(args: myRequestModel): ... if args.n < dynamic_threshold: args.n = args._default_n <-- Here, I get a warning 'Access to a protected member _default_n of a classEsto funciona, pero no creo que esta no sea la forma correcta de advertir.
¿Cuál es la forma adecuada de generar un valor predeterminado que se pueda usar en tiempo de ejecución?