diff --git a/src/strawberry_sqlalchemy_mapper/loader.py b/src/strawberry_sqlalchemy_mapper/loader.py index f2ed0d5..64d684c 100644 --- a/src/strawberry_sqlalchemy_mapper/loader.py +++ b/src/strawberry_sqlalchemy_mapper/loader.py @@ -77,11 +77,11 @@ async def load_fn(keys: List[Tuple]) -> List[Any]: # Use another query when relationship uses a secondary table self_model = relationship.parent.entity - self_model_key_label = relationship.local_remote_pairs[0][1].key - related_model_key_label = relationship.local_remote_pairs[1][1].key + self_model_key_label = str(relationship.local_remote_pairs[0][1].key) + related_model_key_label = str(relationship.local_remote_pairs[1][1].key) - self_model_key = relationship.local_remote_pairs[0][0].key - related_model_key = relationship.local_remote_pairs[1][0].key + self_model_key = str(relationship.local_remote_pairs[0][0].key) + related_model_key = str(relationship.local_remote_pairs[1][0].key) remote_to_use = relationship.local_remote_pairs[0][1] query_keys = tuple([item[0] for item in keys]) diff --git a/src/strawberry_sqlalchemy_mapper/mapper.py b/src/strawberry_sqlalchemy_mapper/mapper.py index 542cff4..d734396 100644 --- a/src/strawberry_sqlalchemy_mapper/mapper.py +++ b/src/strawberry_sqlalchemy_mapper/mapper.py @@ -517,14 +517,18 @@ async def resolve(self, info: Info): ) else: # If has a secondary table, gets only the first ID as additional IDs require a separate query - local_remote_pairs_secondary_table_local = relationship.local_remote_pairs[ - 0][0] - relationship_key = tuple( - [ - getattr( - self, str(local_remote_pairs_secondary_table_local.key)), - ] - ) + relationship_key = () + if relationship.local_remote_pairs: + local_remote_pairs_secondary_table_local = relationship.local_remote_pairs[0][0] + relationship_key = tuple( + [ + getattr( + self, str(local_remote_pairs_secondary_table_local.key)), + ] + ) + return relationship_key + + if any(item is None for item in relationship_key): if relationship.uselist: