У меня есть эта базодель: < /p>
class CameraConfigurationDto(BaseModel):
id: int
name: str
direction: CameraPositionDto
serial: Optional[str] = None
< /code>
Я пытаюсь проанализировать файл json со списком этих конфигураций камеры, у некоторых из них есть набор серийных номеров, другие нет. Если я скопирую фиктивное последовательное значение для всех конфигураций камеры, модель хорошо анализирует, однако с отсутствующим параметром в JSON я получаю ValidationError , например:
pydantic_core._pydantic_core.validationError: 4 ошибки проверки для
ConfigurationDto Cameras.2.serial Поле требуется [type = отсутствует,
input_value = {'id': 2, 'имя': ' top_fr ...- 493.0, 'z_end': 380.0}},
input_type = dict]
Для получения дополнительной информации посетите https://errors.pydantic.dev/2.10/v/missing
< /blockquote>
iirc Это должно быть поведение для проверки Pydantics: < /p>
serial: str # parameter required, needs a string value
serial: Optional[str] # parameter required, but can be set to None
serial: Optional[str] = None # parameter is not required, will be set to None by default if not existing
< /code>
Это не правильно? Очевидно, что я что -то упускаю здесь ... < /p>
Вот полная модель пидантики и код для загрузки для контекста: < /p>
from typing import List, Optional
from pydantic import BaseModel
class CameraPositionDto(BaseModel):
x_start: float
y_start: float
z_start: float
x_end: float
y_end: float
z_end: float
class ComponentPositionDto(BaseModel):
x: float
y: float
z: float
rotation_x: float = 0.0
rotation_y: float = 0.0
rotation_z: float = 0.0
class CameraConfigurationDto(BaseModel):
id: int
name: str
direction: CameraPositionDto
serial: Optional[str] = None
class ComponentConfigurationDto(BaseModel):
name: str
position: ComponentPositionDto
class ConfigurationDto(BaseModel):
cameras: List[CameraConfigurationDto]
components: List[ComponentConfigurationDto]
< /code>
main.py:
from dto import ConfigurationDto
def main():
with open("config.json", "r") as config_file:
config = ConfigurationDto.model_validate_json(config_file.read())
print("hello world")
print(config)
if __name__ == "__main__":
main()
Подробнее здесь: https://stackoverflow.com/questions/793 ... with-a-def
Pydantic 2.x жалуется на отсутствующее поле, даже если оно необязательно со значением по умолчанию ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Союз [лист, нет] против Необязательно [лист] против Необязательно ['Liste']
Anonymous » » в форуме Python - 0 Ответы
- 23 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Союз [лист, нет] против Необязательно [лист] против Необязательно ['Liste']
Anonymous » » в форуме Python - 0 Ответы
- 22 Просмотры
-
Последнее сообщение Anonymous
-