CRUDKit adjustments and bug fixes.

This commit is contained in:
Yaro Kasear 2025-09-11 10:05:32 -05:00
parent eef7428c2f
commit b68dbfc7ae
5 changed files with 26 additions and 13 deletions

View file

@ -157,17 +157,26 @@ class CRUDSpec:
for path in self.eager_paths:
current = root_alias
loader = None
for idx, name in enumerate(path):
rel_attr = getattr(current, name)
loader = (selectinload(rel_attr) if loader is None else loader.selectinload(name))
if loader is None:
loader = selectinload(rel_attr)
else:
loader = loader.selectinload(rel_attr)
current = rel_attr.property.mapper.class_
if fields_map and idx == len(path) - 1 and path in fields_map:
target_cls = rel_attr.property.mapper.class_
target_cls = current
cols = [getattr(target_cls, n) for n in fields_map[path] if hasattr(target_cls, n)]
if cols:
loader = loader.load_only(*cols)
current = rel_attr.property.mapper.class_
if loader is not None:
loads.append(loader)
return loads
def get_join_paths(self):