Некоторые поля в классе pydantic на самом деле являются внутренним представлением, а не тем, что я хочу сериализовать или поместить в схему. Я пробую различные методы, чтобы исключить их, но ничего не помогает.
вот один из подходов, в котором я использую exclue=True и ignore_schema=True поля.
class MyItem(BaseModel):
name: str = Field(...)
data: str = Field(...)
class MyObject(BaseModel):
items_dict: dict[str, MyItem] = Field(..., exclude=True, exclude_schema=True)
@property
def items_list(self):
return list(self.items_dict.values())
@root_validator(pre=True)
@classmethod
def encode_decode_items(cls, values):
items = values.get('items_dict')
if isinstance(items, dict):
values['items_dict'] = list(items.values())
elif isinstance(items, list):
values['items_dict'] = validate_items(items)
return values
obj = MyObject(items_dict=[MyItem(name='item1', data='data1'), MyItem(name='item2', data='data2')])
print(json.dumps(obj.model_json_schema(), indent=2))
однако в схеме это поле все еще присутствует:
{
"$defs": {
"MyItem": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"data": {
"title": "Data",
"type": "string"
}
},
"required": [
"name",
"data"
],
"title": "MyItem",
"type": "object"
}
},
"properties": {
"items_dict": {
"additionalProperties": {
"$ref": "#/$defs/MyItem"
},
"exclude_schema": true,
"title": "Items Dict",
"type": "object"
}
},
"required": [
"items_dict"
],
"title": "MyObject",
"type": "object"
}
Подробнее здесь: https://stackoverflow.com/questions/780 ... the-schema
Как я могу исключить пидантическое поле из схемы? ⇐ Python
Программы на Python
-
Anonymous
1731513136
Anonymous
Некоторые поля в классе pydantic на самом деле являются внутренним представлением, а не тем, что я хочу сериализовать или поместить в схему. Я пробую различные методы, чтобы исключить их, но ничего не помогает.
вот один из подходов, в котором я использую exclue=True и ignore_schema=True поля.
class MyItem(BaseModel):
name: str = Field(...)
data: str = Field(...)
class MyObject(BaseModel):
items_dict: dict[str, MyItem] = Field(..., exclude=True, exclude_schema=True)
@property
def items_list(self):
return list(self.items_dict.values())
@root_validator(pre=True)
@classmethod
def encode_decode_items(cls, values):
items = values.get('items_dict')
if isinstance(items, dict):
values['items_dict'] = list(items.values())
elif isinstance(items, list):
values['items_dict'] = validate_items(items)
return values
obj = MyObject(items_dict=[MyItem(name='item1', data='data1'), MyItem(name='item2', data='data2')])
print(json.dumps(obj.model_json_schema(), indent=2))
однако в схеме это поле все еще присутствует:
{
"$defs": {
"MyItem": {
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"data": {
"title": "Data",
"type": "string"
}
},
"required": [
"name",
"data"
],
"title": "MyItem",
"type": "object"
}
},
"properties": {
"items_dict": {
"additionalProperties": {
"$ref": "#/$defs/MyItem"
},
"exclude_schema": true,
"title": "Items Dict",
"type": "object"
}
},
"required": [
"items_dict"
],
"title": "MyObject",
"type": "object"
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78023568/how-can-i-exclude-a-pydantic-field-from-the-schema[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия