fix: Pydantic Serialization Issues (#3157)

* replaced pydantic inits with validators

* fixed serialization dropping food and unit ids
This commit is contained in:
Michael Genson
2024-02-11 17:34:56 -06:00
committed by GitHub
parent 67313f8f03
commit df75cb4034
3 changed files with 16 additions and 20 deletions

View File

@@ -2,7 +2,7 @@ from __future__ import annotations
from datetime import datetime
from pydantic import UUID4, ConfigDict, field_validator
from pydantic import UUID4, ConfigDict, field_validator, model_validator
from sqlalchemy.orm import joinedload, selectinload
from sqlalchemy.orm.interfaces import LoaderOption
@@ -100,14 +100,15 @@ class ShoppingListItemOut(ShoppingListItemBase):
created_at: datetime | None = None
update_at: datetime | None = None
def __init__(self, **kwargs):
super().__init__(**kwargs)
@model_validator(mode="after")
def post_validate(self):
# if we're missing a label, but the food has a label, use that as the label
if (not self.label) and (self.food and self.food.label):
self.label = self.food.label
self.label_id = self.label.id
return self
model_config = ConfigDict(from_attributes=True)
@classmethod