Как создать экземпляр модели Pydantic с подмножеством полейPython

Программы на Python
Ответить
Anonymous
 Как создать экземпляр модели Pydantic с подмножеством полей

Сообщение Anonymous »

Это модель

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

class UsersInformationModel(BaseDataModel):
id: Optional[int] = None
is_vip: bool = False
creation_tag: Optional[dict] = None  # JSON field mapped to a dictionary
user_id: int  # Not nullable
created_at: Optional[datetime] = None
updated_at: Optional[datetime] = None
branch_id: Optional[int] = None
setting: Optional[dict] = None  # JSON field mapped to a dictionary
vip_type: int = 0
medication_history: Optional[bool] = None
other_disease: Optional[str] = None
tobacco_alcohol_use: Optional[bool] = None
consumed_medications: Optional[str] = None
consumed_medications_amount: Optional[str] = None
и BaseDataModel

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

from pydantic import BaseModel

class BaseDataModel(BaseModel):
class Config:
populate_by_name = True
exclude_unset = True

def dict(self, **kwargs):
return super().model_dump(exclude_unset=True, **kwargs)
Проблема в том, когда я пишу:

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

    data = {
'user_id': self.current_user.id,
'medication_history': self.data.medication_history,
'other_disease': self.data.other_disease,
'tobacco_alcohol_use': self.data.tobacco_alcohol_use,
'consumed_medications': self.data.consumed_medications,
'branch_id': None,
'consumed_medications_amount': self.data.consumed_medications_amount,
}
data = UsersInformationModel(**data)
data_dict = data.dict()
Данные содержат все поля модели, а для не упомянутых полей устанавливается значение «Нет», но data_dict в порядке и содержит только поля, включенные в данные .
Как изменить BaseDataModel, чтобы данные содержали только упомянутые поля? Независимо от того, установлено ли значение None, я хочу, чтобы оно содержало только явно включенные поля.

Подробнее здесь: https://stackoverflow.com/questions/792 ... set-fields
Ответить

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

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

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

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

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