Код: Выделить всё
class FoundForm(Model):
contact_details: FoundContactDetails
...other fields...
Код: Выделить всё
class FoundContactDetails(EmbeddedModel):
name: str
phone_number: str
email: str
address: Optional[DetailedAddress] = None
bank_account: Optional[str] = None
bank_name: Optional[str] = None
Код: Выделить всё
class DetailedAddress(EmbeddedModel):
street: str
ward: str
district: str
city: str
country: str
Код: Выделить всё
async def create_found_form(form_data: FoundFormCreate) -> FoundFormRead:
form = FoundForm(**form_data.model_dump())
return await engine.save(form)
Код: Выделить всё
class FoundFormBase(BaseModel):
contact_details: FoundContactDetails #the embedded model at the top of this post
Код: Выделить всё
class FoundFormCreate(FoundFormBase):
@field_validator('contact_details')
def validate_contact_details(cls, value):
if value.bank_account is not None and value.bank_name is None:
raise ValueError('Bank name is required if bank account is provided')
if value.address is not None:
if not all([value.address.street, value.address.ward, value.address.district, value.address.city, value.address.country]):
raise ValueError('All address fields (street, ward, district, city, country) are required if address is provided')
return value
Код: Выделить всё
{
"contact_details": {
"name": "string",
"phone_number": "string",
"email": "string",
"address": {
"street": "string",
"ward": "string",
"district": "string",
"city": "string",
"country": "string"
},
"bank_account": "string",
"bank_name": "string"
}
}
Код: Выделить всё
"detail": "string indices must be integers, not 'str'"
Спасибо за чтение. < /p>
Как я могу обрабатывать несколько вложенных объектов, особенно имеет некоторые необходимые и дополнительные микширование, также пусть объекты odmantic /pydantic Access ' Поля правильно.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ces-by-str
Мобильная версия