diff --git a/spoolman/database/filament.py b/spoolman/database/filament.py index 1017203..fb9068e 100644 --- a/spoolman/database/filament.py +++ b/spoolman/database/filament.py @@ -69,7 +69,11 @@ async def find( article_number: Optional[str] = None, ) -> list[models.Filament]: """Find a list of filament objects by search criteria.""" - stmt = select(models.Filament).options(contains_eager(models.Filament.vendor)).join(models.Filament.vendor) + stmt = ( + select(models.Filament) + .options(contains_eager(models.Filament.vendor)) + .join(models.Filament.vendor, isouter=True) + ) if vendor_name is not None: stmt = stmt.where(models.Vendor.name.ilike(f"%{vendor_name}%")) if vendor_id is not None: diff --git a/spoolman/database/spool.py b/spoolman/database/spool.py index 9ba2cae..37e4792 100644 --- a/spoolman/database/spool.py +++ b/spoolman/database/spool.py @@ -74,8 +74,8 @@ async def find( """Find a list of spool objects by search criteria.""" stmt = ( sqlalchemy.select(models.Spool) - .join(models.Spool.filament) - .join(models.Filament.vendor) + .join(models.Spool.filament, isouter=True) + .join(models.Filament.vendor, isouter=True) .options(contains_eager(models.Spool.filament).contains_eager(models.Filament.vendor)) ) if filament_name is not None: