Как указать в модели для поля возможность значения как string так и null?
Пробовал как в документации, но это не работает https://field-idempotency--pydantic-docs.netlify.app/usage/types/ В итоговой схеме json, нет никаких инструкций насчёт того что поле может принимать значение null и string. Максимум чего я добился - игнорирование ошибки если поля нет в принципе. Вот что я пытался сделать:
none_or_str: str
none_or_str: str | None
none_or_str: Optional[str] = ...
none_or_str: str = Field(...)
Код для воспроизведения проблемы:
from typing import TypedDict, Optional
from pydantic import BaseModel, Field
import json
from jsonschema import validate
def validate_schema(instance: dict, schema: dict) -> None:
validate(instance=instance, schema=schema)
class TTest(BaseModel):
none_or_str: Optional[str] = None
j = '''{"none_or_str":null}'''
validate_schema(json.loads(j), TTest.schema())
Ошибка:
jsonschema.exceptions.ValidationError: None is not of type 'string'
Failed validating 'type' in schema['properties']['none_or_str']:
{'title': 'None Or Str', 'type': 'string'}
On instance['none_or_str']:
None
Источник: Stack Overflow на русском