diff --git a/common/models/db_models.py b/common/models/db_models.py index de4d2820..5c39fb2d 100644 --- a/common/models/db_models.py +++ b/common/models/db_models.py @@ -1,6 +1,7 @@ from sqlalchemy import Index, Column, BigInteger, String, DateTime, ForeignKey, Integer, Float, FetchedValue from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import relationship +from sqlalchemy.orm.collections import InstrumentedList from common.exceptions import BadFilterError @@ -34,10 +35,18 @@ def to_nested_dict(self, includes): for include in includes: if type(include) is str: related_entity = self.get_related_entity(include) + if not isinstance(related_entity, InstrumentedList): dictionary[related_entity.__tablename__] = related_entity.to_dict() + else: + for entity in related_entity: + dictionary[f"{entity.__tablename__} {entity.ID}"] = entity.to_dict() elif type(include) is dict: related_entity = self.get_related_entity(list(include)[0]) + if not isinstance(related_entity, InstrumentedList): dictionary[related_entity.__tablename__] = related_entity.to_nested_dict(include[list(include)[0]]) + else: + for entity in related_entity: + dictionary[f"{entity.__tablename__} {entity.ID}"] = entity.to_nested_dict(include[list(include)[0]]) except TypeError: raise BadFilterError(f" Bad include relations provided: {includes}") return dictionary