8 votes

Comment exiger des valeurs de chaîne prédéfinies dans les basemodels python pydantic?

Y a-t-il un moyen intégré dans pydantic pour spécifier des options? Par exemple, disons que je veux une valeur de chaîne qui doit avoir soit la valeur "foo" soit "bar".

Je sais que je peux utiliser une validation regex pour cela, mais étant donné que j'utilise pydantic avec FastAPI, les utilisateurs ne verront que l'entrée requise en tant que chaîne, mais lorsqu'ils saisissent quelque chose, cela donnera une erreur de validation. Toutes les validations intégrées de pydantic sont affichées dans l'interface de l'api, donc ce serait génial s'il y avait quelque chose comme

classe Input(BaseModel):
     option: "foo" || "bar"

17voto

SColvin Points 570

Oui, vous pouvez soit utiliser une énumération :

class Choices(Enum):
    foo = 'foo'
    bar = 'bar'

class Input(BaseModel):
     option: Choices

voir ici

Ou vous pouvez utiliser Literal :

class Input(BaseModel):
     option: Literal['foo', 'bar']

voir ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X