Pydantic ограничивает строку буквальными значениями и преобразует ее в нижний регистрPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Pydantic ограничивает строку буквальными значениями и преобразует ее в нижний регистр

Сообщение Anonymous »

Как ограничить значение строкового поля определенными значениями без учета регистра?

Код: Выделить всё

>>> Animal(species="antelope")
>>> Animal(species="AnTeLoPe")
>>> Animal(species="frog")  # ValidationError: `species must be antelope or zebra`
Я знаю, что вы можете ограничить поле Pydantic определенными значениями:

Код: Выделить всё

import pydantic
from typing import Literal

class Animal(pydantic.BaseModel):
species: Literal["antelope", "zebra"]
И я знаю, что вы можете преобразовать входные данные в нижний регистр:

Код: Выделить всё

class Animal(pydantic.BaseModel):
species: pydantic.constr(to_lower=True)
Но я не понимаю, как объединить эти две функции, чтобы мне не приходилось прописывать версии моего набора литералов в верхнем и нижнем регистре:
p>

Код: Выделить всё

class Animal(pydantic.BaseModel):
species: Literal["antelope", "Antelope"] # ...etc
Я думал, что использование str_to_lower поможет, но это не сработало:

Код: Выделить всё

class Animal(pydantic.BaseModel):
model_config = pydantic.ConfigDict(str_to_lower=True)
species: Literal["antelope", "zebra"]

Animal(species="AnTeLope")  # ValidationError
Я вижу выход из этой ситуации с помощью регулярных выражений, но кажется, что это настолько распространенный вариант использования, что использование регулярных выражений кажется неудобным обходным решением (что, если мои разрешенные значения получили символы регулярного выражения, то мне придется экранировать их)


Подробнее здесь: https://stackoverflow.com/questions/793 ... lower-case
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»